获取中文字符长度遇到的问题,以及解决方法

时间:2021-08-13 07:35:26

使用strlen()函数获取中文字符,会出现默认一个中文字符为3个字节(UTF8编码),如果是GBK编码,则默认一个中文字符为2个字节。

之后在网上查找如何正确获取中文字符长度的方法,发现大多都是以创建函数的方式来解决;

//这是WordPress中的一段代码,主要思想就是先用正则将字符串分解为个体单元,然后再计算单元的个数即字符串的长度,代码如下(只能处理utf-8编码下的字符串):

$zhStr = ‘您好,中国!’;
$str = ‘Hello,中国!’;

// 计算中文字符串长度
function utf8_strlen($string = null) {
// 将字符串分解为单元
preg_match_all(“/./us”, $string, $match);
// 返回单元个数
return count($match[0]);
}

echo utf8_strlen($zhStr); // 输出:6
echo utf8_strlen($str); // 输出:9
<span style="font-size:18px;color:#FF0000;">
可是后来我发现,可以直接调用mb_strlen()函数获取中文字符串长度</span>
如:
$lenth=mb_strlen('我是一个有硬度的男人','utf8');echo $lenth;//输出 10$lenth=mb_strlen(我是一个,有硬度的man',‘utf8');echo $lenth;//输出11

如此简单方便,为何还要自己建立函数来获取字符串长度呢?

可能是还有些我想不到方面吧。