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执行速度全攻略(上)
Oct 09 PHP
一个ubbcode的函数,速度很快.
Oct 09 PHP
在mysql数据库原有字段后增加新内容
Nov 26 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
PHP 字符串长度判断效率更高的方法
Mar 02 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
PHP中文乱码解决方案
Mar 05 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
Apr 09 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
Yii2框架redis基本应用示例
Jul 13 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
laravel框架中视图的基本使用方法分析
Nov 23 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 开发环境配置(Zend Server安装)
2010/04/28 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
Python计算三角函数之asin()方法的使用
2015/05/15 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
python接口自动化框架实战
2020/12/23 Python
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
书香校园建设方案
2014/05/02 职场文书
保险公司开门红口号
2014/06/21 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
教师党员承诺书2015
2015/01/21 职场文书
2015年人事科工作总结
2015/04/28 职场文书
Python基础详解之描述符
2021/04/28 Python
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python