说明:
PHP判断字符串是否为中文(或英文)的方法,除了正则表达式判断和拆分字符判断字符的值是否小于128外还有一种比较特别的方法。
那就是使用php中的mb_strlen和strlen函数判断:
分别使用以上两个函数以当前编码测出字符的返回值,然后比较返回值。
返回值相等的为纯英文、纯数字、英数混排;
返回值不等,且strlen返回值可被mb_strlen整除的为纯汉字。
返回值不等,且strlen返回值不可被mb_strlen整除的为英汉或数汉混排。
多么奇妙的函数,多么有意思的想法,多么精彩的例子,在下面,呵呵。
例子,
<?php $strarray[1] = "hello"; $strarray[2] = "123456"; $strarray[3] = "123hello"; $strarray[4] = "你好"; $strarray[5] = "123你好"; $strarray[6] = "hello你好"; $strarray[7] = "123hello你好"; foreach ($strarray as $key->$value) { $x = mb_strlen($value,'gb2312'); $y = strlen($value); echo $strarray[$key].' <span style="color: #ff0000;">'.$x.'</span> <span style="color:#ff0000;">'.$y.'</span>'; } ?>
输出结果:
hello 5 5
123456 6 6
123hello 8 8
你好 2 4
123你好 5 7
hello你好 7 9
123hello你好 10 12
php没有直接函数来判断一个字符串是否是纯英文或纯汉字以及汉英混合,只能自己写函数。
要想实现此功能就必需对字符集汉字编码占位进行了解,就目前国内比较常用的字符集当属UTF8与GBK了。
UTF8每个汉字等于3个长度;
GBK每个汉字等于2个长度;
根据以上汉字与英文的差异,可以使用mb_strlen函数与strlen函数分别计算出两组长度数字,然后根据规律进行运算即可判断出字符串的类型了。
1、UTF-8的例子
<?php /** * PHP判断字符串纯汉字 OR 纯英文 OR 汉英混合 * site www.jb200.com */ echo '<meta charset="utf-8" />'; function utf8_str($str){ $mb = mb_strlen($str,'utf-8'); $st = strlen($str); if($st==$mb) return '纯英文'; if($st%$mb==0 && $st%3==0) return '纯汉字'; return '汉英混合'; } $str = '博客'; echo '字符串:<span style="color:red">'.$str.'</span>,是<span style="color:red">'.utf8_str($str).'</span>'; ?>
2、GBK方法的例子
<?php /** * PHP判断字符串纯汉字 OR 纯英文 OR 汉英混合 * site www.jb200.com */ function gbk_str($str){ $mb = mb_strlen($str,'gbk'); $st = strlen($str); if($st==$mb) return '纯英文'; if($st%$mb==0 && $st%2==0) return '纯汉字'; return '汉英混合'; } ?>