中文字的字串處理 - 以 PHP 為例

PHP:7.2

字串過濾是一個很常見的需求,如果需求只有數字及英文字母時,還算容易完成,但如果要加上漢字的過濾就複雜許多了。

Notice: 以下說明皆為 UTF-8 編碼。

既然要處理特定字元,就必須先瞭解它們的編碼區間,根據 Unicode 字符平面映射 可以找出相關字元的對應區間。

而中文字是座落在 4E00-9FFF中日韓統一表意文字,也就是 漢字

因此,只要針對需求從 中日韓統一表意文字 下手就可以解決問題了。

Example

// 字串
$str = "a 1a 2a<臣亮言>。xxyy先帝创业未半,写写笔记本";

// 找出漢字、英文、數字
preg_match_all('/[\x{4e00}-\x{9fff}a-zA-Z0-9]/u', $str, $matches1);
// 找出漢字
preg_match_all('/[\x{4e00}-\x{9fff}]/u', $str, $matches2);

$string1 = implode('', $matches1[0]);
$string2 = implode('', $matches2[0]);

echo $string1 . PHP_EOL;
echo $string2 . PHP_EOL;
Categories: PHP