用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

PHP strlen与mb_strlen判断字符串是纯英文/纯汉字/汉英混合

时间:2015-01-23  来源:西部数据  作者:西部数据

下面我来介绍PHP strlen与mb_strlen判断字符串是纯英文/纯汉字/汉英混合,在php中UTF8每个汉字等于3个长度;GBK每个汉字等于2个长度;

利用以上汉字与英文的差异,我们就可以利用mb_strlen函数与strlen函数分别计算出两组长度数字,然后根据规律进行运算即可判断出字符串的类型了.

先讲一下strlen与mb_strlen是求字符串长度的函数,代码如下:

  1. <?php
  2. //测试时文件的编码方式要是UTF8 
  3. $str='中文a字1符';
  4. echo strlen($str).'<br>';//14 
  5. echo mb_strlen($str,'utf8').'<br>';//6 
  6. echo mb_strlen($str,'gbk').'<br>';//8 
  7. echo mb_strlen($str,'gb2312').'<br>';//10 
  8. ?>  

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得 到的只是字符串所占的字节数,对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了,在 UTF-8编码下,一个汉字占3个字节.

例,代码如下:

  1. <?php 
  2. /** 
  3. * PHP判断字符串纯汉字 OR 纯英文 OR 汉英混合 
  4. */ 
  5. echo '<meta charset="utf-8" />'
  6. function utf8_str($str){ 
  7. $mb = mb_strlen($str,'utf-8'); 
  8. $st = strlen($str); 
  9. if($st==$mb
  10. return '纯英文'
  11. if($st%$mb==0 && $st%3==0) 
  12. return '纯汉字'
  13. return '汉英混合'
  14. $str = '琼台博客'
  15. echo '字符串:<span style="color:red">'.$str.'</span>,是<span style="color:red">'.utf8_str($str).'</span>'
  16. ?> 

需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题.

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门