在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。

在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。

下面通过例子,讲解这两者之间的区别。

先看例子:

//测试时文件的编码方式要是UTF8

$str='中文a字1符';

echo strlen($str).'
';//14

echo mb_strlen($str,'utf8').'
';//6

echo mb_strlen($str,'gbk').'
';//8

echo mb_strlen($str,'gb2312').'
';//10

?>

结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .

利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1)

echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;

例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出“中文a字1符”的占位是10.

echo mb_internal_encoding();

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”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

java strlen_字符串长度函数strlen和mb_strlen的区别示例介绍相关推荐

  1. php获取字符串长度函数strlen和mb_strlen

    php获取字符串长度函数strlen和mb_strlen count() - 计算数组中的单元数目,或对象中的属性个数 strlen - 获取字符串长度,一个汉字为3个字符 mb_strlen() - ...

  2. PHP获取字符串长度之strlen和mb_strlen的区别

    在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别. 下面通过例子,讲解这两者之间的区别. 先看例子: <?php / ...

  3. php 获取字符串长度 包含空格,php中常用的字符串长度函数strlen()与mb_strlen()实例解释...

    int strlen ( string $string ) int strlen ( string $string )  获取给定字符串的[字节]长度 成功则返回字符串$string的长度,如果$st ...

  4. php获取汉字的长度,php中处理汉字字符串长度:strlen和mb_strlen

    PHP内置的字符串长度函数strlen()无法正确处理中文字符串,它得到的只是字符串所占的字节数.对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍 ...

  5. 玩转PHP(一)---php中处理汉字字符串长度:strlen和mb_strlen

    注:本文为小编原创,如若转载,请注明出处:http://blog.csdn.net/u012116457/article/details/42536039 今天正式开始学习PHP了,不过小编一不小心就 ...

  6. php里那些函数是获取字符串长度,【后端开发】PHP获取字符串长度函数strlen()函数...

    在一些网站注册或者其他活动中,我们需要用户提交一些信息,对于这些信息会有一定的要求,比如用户注册信息有一些限制长度不能小于多少大于多少.这里我们就需要使用PHP自带函数进行获取操作. 获取字符串长度使 ...

  7. 细说PHP中strlen和mb_strlen的区别(转)

    在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别. 下面通过例子,讲解这两者之间的区别. 先看例子: <?php / ...

  8. 细说PHP中strlen和mb_strlen的区别

    在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样.这里主要比较一下,中英文混排的时候,两个计算结果. 在PHP中,strlen与mb_st ...

  9. strlen和mb_strlen的区别

    在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样.这里主要比较一下,中英文混排的时候,两个计算结果. 在PHP中,strlen与mb_st ...

  10. php strlen 线程安全,浅析PHP中strlen和mb_strlen的区别

    在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别. 下面通过例子,讲解这两者之间的区别. 先看例子: //测试时文件的编码 ...

最新文章

  1. 快乐的迁移到 Python3
  2. Android sqlite 数据库保存Date 类型
  3. 在GridView中的批量删除!
  4. springapplication.run运行多个应用_编程的十二要素应用宣言
  5. 一周刷题记录 | WebMisc
  6. javase期末考试题_java期末考试试题及答案
  7. swt 键盘事件ctrl+c_VB键盘事件详解
  8. Tricks Device 最短路+最大流
  9. win10原版操作系统安装过程【超详细】
  10. 虚拟文件系统VSF的作用
  11. 诗词取名:出自古诗词中富有文采的女孩名字
  12. 内网/外网实现部署nginx服务
  13. Python词云_自定义图片做背景
  14. 手机刷机软件与ROM的盈利模式分析
  15. 数学建模——微分方程
  16. c语言读文件时 fgetc,[求助]用fgetc()读取文件时遇到的问题~~
  17. 无法访问计算机0x80070035,出现错误代码0x80070035,无法访问共享文件夹,解决方法...
  18. SAP MM 采购申请后台配置
  19. cad放大_cad快捷键+鼠标操作,全了!
  20. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxxxx

热门文章

  1. python爬取哔哩哔哩视频_python爬取哔哩哔哩小视频
  2. 2011-6-14 - 晨间日志
  3. 35岁后你的职场危机,你该何去何从
  4. 计算机术语死机,计算机“死机”故障原因及处理办法大全
  5. Photoshop抠图大决战
  6. Wireshark实验
  7. LiveData更新数据报错java.lang.IllegalStateException: Cannot invoke setValue on a background thread
  8. 关于Bundle Adjustment(BA)的直观理解
  9. PostgreSQL 生成随机数字、字符串、日期、验证码以及 UUID
  10. 企业邮箱的好处有哪些?企业邮箱使用场景