字符长度计算 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

 

 

posted @ 2021-09-25 08:32  方达达  阅读(67)  评论(0编辑  收藏  举报