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 相关文章推荐
php与java通过socket通信的实现代码
Oct 21 PHP
php实现图片缩放功能类
Dec 18 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
php实现简单爬虫的开发
Mar 28 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
Yii实现复选框批量操作实例代码
Mar 15 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
php实现微信企业转账功能
Oct 02 PHP
php 使用 __call实现重载功能示例
Nov 18 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 SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
轻轻松松学习JavaScript
2007/02/25 Javascript
javascript数组组合成字符串的脚本
2021/01/06 Javascript
js原型链原理看图说明
2012/07/07 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
python判断windows隐藏文件的方法
2014/03/21 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
演讲稿怎么写才完美
2014/01/02 职场文书
大学秋游活动方案
2014/02/11 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
服装采购员岗位职责
2014/03/15 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
社区两委对照检查材料
2014/08/23 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
Python实现单例模式的5种方法
2021/06/15 Python