字符长度计算 strlen 函数 和 mb_strlen 函数区别
既然决定了,就要贯彻到底。
在php 中求某个字符串长度的时候,我们一般就直接用到strlen 函数,但是这个函数是有鸡肋的,如果字符串中包含了多字节的字符的话,比如字符串中有中文,就容易判断不准,因为此时系统所采用的字符编码方式有关系
strlen 和 mb_strlen 函数区别
直接看例子:
public function dada() {
$data = 'hello world';
echo strlen($data);
echo '<hr>';
echo mb_strlen($data);
}
输出结果:
在都是英文字母的时候没有什么区别,
在看有中文字符时候的例子
public function dada() {
$data = 'hello world, 你好啊';
echo strlen($data);
echo '<hr>';
echo mb_strlen($data);
}
输出结果:
结果不一致,就开始出现不同的结果了,因为strlen 计算中文的时候就根据字符编码计算计算的,一个中文相当于3个字符长度,所以就显示22
官方手册,针对mb_strlen 函数,解释到 返回具有 encoding 编码的字符串 str 包含的字符数,多字节的字符被计为 1。所以中文在此就计为1