在 PHP 要判断字串是否有中文,可以用 mb_strlen() 及 strlen() 两个函式实现。strlen() 会回传字串的长度,但如果是中文, 日文及韩文等文字,会回传较长的结果。而 mb_strlen() 则可以加入编码,例如 UTF-8 及 BIG5 等,让 PHP 自动判断字串的长度,只要比对 mb_strlen() 及 strlen() 回传的字串长度,如果相同,即表示没有中文字在字串内,如果不相同,那便表示有中、日、韩等亚洲文字存在,例如:
|
1 2 3 4 5 6 7 8 9 |
<?php $string = '中文测试'; if (mb_strlen($string, "UTF-8") == strlen($string)) { echo "没有中文"; } else { echo "有中文"; } ?> |
上面 mb_strlen() 设定了字串为 UTF-8 编码,如果是 BIG5 编码,则要改成 BIG5, 但这样很麻烦,只要配合 mb_detect_encoding() 函式,让 PHP 自动检查字串的编码,就不用每次设定不同编码了:
|
1 2 3 4 5 6 7 8 9 |
<?php $string = '中文测试'; if (mb_strlen($string, mb_detect_encoding($string)) == strlen($string)) { echo "没有中文"; } else { echo "有中文"; } ?> |
这招真帅,你自己想的?
感谢这招的分享!!
而我试过之后,发现程式中的”有中文”和”没有中文”写相反了!!
谢谢指正!