看见很多朋友问如何判断字符串是否是纯英文,或纯汉字,或英汉混合。有个传统的方案就是判断字符的值是否小于128,但这种方法无法适用全汉字或英汉混合的情况,这里我提出一种新的途径来辨别。
复制代码
- < ?php
- $str = "456abc";
- $x = mb_strlen($str,'gb2312');
- $y = strlen($str); echo "------456abc----
"; echo "$x".' '; echo "$y".' ';
- $str = "456我是中国人abc
";
- $x = mb_strlen($str,'gb2312');
- $y = strlen($str);
- echo "------456我是中国人abc----
"; echo "$x".' '; echo "$y".' ';
- $str = "我是中国人我爱祖国";
- $x = mb_strlen($str,'gb2312');
- $y = strlen($str); echo "------我是中国人我爱祖国----
"; echo "$x".' ';
- echo "$y".'
'; $str = "我";
- $x = mb_strlen($str,'gb2312');
- $y = strlen($str); echo "------我----
"; echo "$x".' ';
- echo "$y".'
';
- $str = "我ab";
- $x = mb_strlen($str,'gb2312');
- $y = strlen($str); echo "------我ab----
"; echo "$x".' '; echo "$y".' ';
- ?>
|
利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文、英汉混合、还是纯汉字。简要说明如下(以上示例程序)
1、如果strlen返回的字符长度和mb_strlen以当前编码计算的长度一致,可以判断是纯英文字符串。
2、如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致,且strlen返回值同mb_strlen的返回值求余后得0可以判断为是全汉字的字符串。
3、如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致,且strlen返回值同mb_strlen的返回值求余后不为0,可以判断为是英汉混合的字符串。