博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
strlen 与 mb_strlen 区别
阅读量:3784 次
发布时间:2019-05-22

本文共 1089 字,大约阅读时间需要 3 分钟。

strlen — 获取字符串长度
说明
int strlen ( string $string )
返回给定的字符串 string 的长度。
参数
string  需要计算长度的字符串。
返回值
成功则返回字符串 string 的长度;如果 string 为空,则返回 0。
mb_strlen — 获取字符串的长度
说明
mixed mb_strlen ( string $str[, string $encoding = mb_internal_encoding() ] )
获取一个 string 的长度
参数
str  要检查长度的字符串。
encoding  encoding参数为字符编码。如果省略,则使用内部字符编码。
返回值
返回具有 encoding 编码的字符串 str 包含的字符数。 多字节的字符被计为 1。

如果给定的 encoding 无效则返回 FALSE。

strlen与mb_strlen是求字符串长度的函数.

案例:

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

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

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

你可能感兴趣的文章
在VScode上配置golang的开发环境
查看>>
leetcode每日一题---680. 验证回文字符串 Ⅱ
查看>>
leetcode每日一题---15. 三数之和
查看>>
leetcode每日一题---面试题 16.18. 模式匹配
查看>>
地主的钱袋
查看>>
招新成绩统计
查看>>
webpack
查看>>
go部署
查看>>
配置swagger--go语言
查看>>
打印杨辉三角
查看>>
java中String类中常用方法
查看>>
flutter学习笔记:第一个APP应用
查看>>
哲学家进餐问题
查看>>
Python-Opencv学习总结(一):图像读取和获取图像特征
查看>>
实验十三:导出与导入
查看>>
第十五周.
查看>>
基于MVC模式的用户登录
查看>>
Java Swing搭建QQ登录界面
查看>>
Spring常用依赖及注解的使用
查看>>
解决Maven中资源过滤问题
查看>>