中文字的字串處理 - 以 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;