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 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
PHP4在Windows2000下的安装
Oct 09 PHP
PHP扩展编写点滴 技巧收集
Mar 09 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
php cli模式下获取参数的方法
May 05 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 PHP
php+laravel依赖注入知识点总结
Nov 04 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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
基于mysql的论坛(4)
2006/10/09 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
js html实现计算器功能
2018/11/13 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
html5图片上传预览示例分享
2014/04/14 HTML / CSS
百思买美国官网:Best Buy
2016/07/28 全球购物
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
先进党支部事迹材料
2014/01/13 职场文书
岗位说明书范文
2014/05/07 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
南京大屠杀观后感
2015/06/02 职场文书
董事长秘书工作总结
2015/08/14 职场文书
导游词之临安白水涧
2019/11/05 职场文书
Java 关于String字符串原理上的问题
2022/04/07 Java/Android