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函数分别计算出两组长度数字,然后根据规律进行运算即可判断出字符串的类型了。
UTF-8实例
 
复制代码 代码如下:
<?php  
    /** 
     * PHP判断字符串纯汉字 OR 纯英文 OR 汉英混合 
     */  
    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>';  
?>
 
GBK方法
 
复制代码 代码如下:
<?php
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 '汉英混合';  
    }
?>