php strlen mb_strlen计算中英文混排字符串长度


Posted in PHP onJuly 10, 2009

比较strlen和mb_strlen
当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。(测试时编码方式是UTF8)

<?php 
$str=‘中文a字1符‘; 
echo strlen($str); 
echo ‘<br />‘; 
echo mb_strlen($str,‘UTF8‘); 
//输出结果 
//14 
//6 
?>

结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6
关于中英文混排串的占位符计算:
利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1),计算的方法是:如果一个混排字符串有a个中文,b个英文,占位是:
<?php 
$str=‘中文a字1符‘; 
//计算如下 
echo (strlen($str) + mb_strlen($str,‘UTF8‘)) / 2; 
echo 
//输出结果 
//10 
?>

例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出“中文a字1符”的占位是10.
附网站的一篇文章:
还是有关中文的问题。PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。

采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数得到。需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函数的问题。

PHP 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
ajax+php打造进度条代码[readyState各状态说明]
Apr 12 PHP
PHP源代码数组统计count分析
Aug 02 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
深入php多态的实现详解
Jun 09 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
PHP调用其他文件中的类
Apr 02 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 PHP
UTF8编码内的繁简转换的PHP类
Jul 09 #PHP
PHP 程序授权验证开发思路
Jul 09 #PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
Jul 09 #PHP
程序员编程十条戒律
Jul 09 #PHP
php 执行系统命令的方法
Jul 07 #PHP
PHP 页面跳转到另一个页面的多种方法方法总结
Jul 07 #PHP
php 多个submit提交表单 处理方法
Jul 07 #PHP
You might like
第三章 php操作符与控制结构代码
2011/12/30 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
javascript 有用的脚本函数
2009/05/07 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
python处理excel绘制雷达图
2019/10/18 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
大学生村官典型材料
2014/01/12 职场文书
庆元旦演讲稿
2014/09/15 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书