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 相关文章推荐
让你同时上传 1000 个文件 (二)
Oct 09 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
PHP提取字符串中的图片地址[正则表达式]
Nov 12 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
smarty缓存用法分析
Dec 16 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 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
农民和部队如何穿矿
2020/03/04 星际争霸
php+dbfile开发小型留言本
2006/10/09 PHP
php 保留字列表
2012/10/04 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
php中动态调用函数的方法
2015/03/16 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
javascript中this关键字详解
2016/12/12 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python中的列表生成式与生成器学习教程
2016/03/13 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
Python 忽略warning的输出方法
2018/10/18 Python
python调用外部程序的实操步骤
2019/03/04 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
一月红领巾广播稿
2014/02/11 职场文书
2014年居委会工作总结
2014/12/09 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书