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安装为Apache DSO
Oct 09 PHP
支持oicq头像的留言簿(二)
Oct 09 PHP
php auth_http类库进行身份效验
Mar 19 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
php 强制下载文件实现代码
Oct 28 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
php判断是否连接上网络的方法实例详解
Dec 14 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的access操作类
2008/04/09 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
jQuery Ajax使用 全解析
2010/12/15 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
九种原生js动画效果
2015/11/11 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
Python实现基于POS算法的区块链
2018/08/07 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
python实现人机五子棋
2020/03/25 Python
深入了解NumPy 高级索引
2020/07/24 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
html5 标签
2009/07/16 HTML / CSS
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
西式婚礼证婚词
2014/01/12 职场文书
加班费申请报告
2015/05/15 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript