博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php中处理汉字字符串长度:strlen和mb_strlen
阅读量:6329 次
发布时间:2019-06-22

本文共 823 字,大约阅读时间需要 2 分钟。

本文转自IT摆渡网欢迎转载,请标明出处

更多php文章请阅读

  如这个例子:

  

  这个代码的输出结果是:姓名的长度为:6

  先探讨一下为什么会出现这个问题:PHP内置的字符串长度函数strlen()无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。

  如果非要使用strlen函数计算含有中文的字符串的长度也是可以的,下面这个例子是在网上摘来的:

function chinesesubstr($str,$start,$len) {       $strlen=$start+$len;       for($i=0;$i<$strlen;$i++) {           if(ord(substr($str,$i,1))>0xa0) {               $tmpstr.=substr($str,$i,2);               $i++;           } else               $tmpstr.=substr($str,$i,1);       }       return $tmpstr;   }  ?>

  不过,除了这个,我们完全可以用mb_strlen这个函数来计算:

  这是的输出结果即为:姓名的长度为:2

  mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。

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

你可能感兴趣的文章
不用Visual Studio,5分钟轻松实现一张报表
查看>>
(译)如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分
查看>>
敬告各位 ALinq 用户,切勿上当受骗
查看>>
计算机图形学(一) 图形系统综述
查看>>
持续集成(CI)- 几种测试的区别(摘录)
查看>>
多用户虚拟Web3D环境Deep MatrixIP9 1.04发布
查看>>
求高手,求解释
查看>>
[MSSQL]NTILE另类分页有么有?!
查看>>
winform datagridview 通过弹出小窗口来隐藏列 和冻结窗口
查看>>
C机顶盒开发实战常用初始化类型:数组、结构、指针
查看>>
Jquery闪烁提示特效
查看>>
最佳6款用于移动网站开发的 jQuery 图片滑块插件
查看>>
C++ String
查看>>
获取系统托盘图标的坐标及文本
查看>>
log4j Test
查看>>
HDU 1255 覆盖的面积(矩形面积交)
查看>>
Combinations
查看>>
SQL数据库无法附加,提示 MDF" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。...
查看>>
第二十一章流 3用cin输入
查看>>
在workflow中,无法为实例 ID“...”传递接口类型“...”上的事件“...” 问题的解决方法。...
查看>>