PHP 判斷 UTF-8 字串是 簡體 或 繁體中文

PHP 在判斷簡體 / 繁體中文部份,以前是可以 Big5 / GB2312 / GBK 來判斷(可以使用 mb_detect_encoding()),但是 UTF-8 後,就有點麻煩了。

PHP 判斷 UTF-8 字串是 簡體 或 繁體中文

簡體和繁體的 UTF-8 字碼表是可以列的出來,不過會有一個字同時是簡體和繁體的情況,要判斷一個字串是簡體和繁體,這種判斷法有點複雜。

想到比較偷懶的方式,就是在把 UTF-8 轉換成 Big5 / CP950,再來比較看看字串長度(文字字串長度不同就代表不是繁體),雖然這個作法不是 100% 準確,但是應該夠用了。

PHP 有下述兩個 Function 是作編碼轉換的:

以往我都用 mb_convert_encoding() 來做轉換,但是在此轉換時,用這個轉 CP950 <-> UTF-8 這些在怎麼互轉,裏面的編碼都會幫我留存的很好,造成要去換算長度都是一
樣的,所以改用 iconv()。

註:iconv() 需要搭配 //IGNORE

mb_convert_encoding() 與 iconv() 的文字長度範例

 $s) {     echo $i . ' cp950: ' . mb_strlen(mb_convert_encoding($s, 'cp950', 'utf-8'), 'cp950') . "\n";     echo $i . ' cp950: ' . mb_strlen(iconv('UTF-8', 'cp950//IGNORE', $s), 'cp950') . "\n";     echo $i . ' cp950: ' . mb_strlen(mb_convert_encoding(mb_convert_encoding($s, 'cp950', 'utf-8'), 'UTF-8', 'cp950'), 'UTF-8') . "\n";     echo $i . ' utf-8: ' . mb_strlen($s, 'utf-8') . "\n"; } ?>

於上述測試,所以寫下述兩個 function 來判斷簡體與繁體

驗證範例

 $s) {     echo $s . "\n";     var_dump(is_simplified($s));     var_dump(is_traditional($s)); } ?>

想在手機閱讀更多PHP資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems