下面我來介紹PHP strlen與mb_strlen判斷字符串是純英文/純漢字/漢英混合,在php中UTF8每個漢字等于3個長度;GBK每個漢字等于2個長度;
利用以上漢字與英文的差異,我們就可以利用mb_strlen函數與strlen函數分別計算出兩組長度數字,然后根據規律進行運算即可判斷出字符串的類型了.
先講一下strlen與mb_strlen是求字符串長度的函數,代碼如下:
- <?php
- //測試時文件的編碼方式要是UTF8
- $str='中文a字1符';
- echo strlen($str).'<br>';//14
- echo mb_strlen($str,'utf8').'<br>';//6
- echo mb_strlen($str,'gbk').'<br>';//8
- echo mb_strlen($str,'gb2312').'<br>';//10
- ?>
PHP內置的字符串長度函數strlen無法正確處理中文字符串,它得 到的只是字符串所占的字節數,對于GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對于UTF-8編碼的中文,就是3倍的差異了,在 UTF-8編碼下,一個漢字占3個字節.
例,代碼如下:
- <?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>';
- ?>
需要注意的是,mb_strlen并不是PHP核心函數,使用前需要確保在php.ini中加載了php_mbstring.dll,即確保“extension=php_mbstring.dll”這一行存在并且沒有被注釋掉,否則會出現未定義函 數的問題.
新聞熱點
疑難解答