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 cookis创建实现代码
Mar 16 PHP
php学习之简单计算器实现代码
Jun 09 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
Jun 24 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 PHP
php短信接口代码
May 13 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP迭代器接口Iterator用法分析
Dec 28 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
php实现JWT验证的实例教程
Nov 26 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
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php文件操作相关类实例
2015/06/18 PHP
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
用python爬取租房网站信息的代码
2018/12/14 Python
python中下标和切片的使用方法解析
2019/08/27 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
一套Java笔试题
2016/08/20 面试题
党校个人自我鉴定范文
2014/03/28 职场文书
企业趣味活动方案
2014/08/21 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书