我试图得到这个unicode字符字符串的长度
$text = 'نام سلطان م';
$length = strlen($text);
echo $length;
输出20
如何确定unicode字符串的长度?
strlen()
不能正确处理多字节字符,因为它假设1个字符等于1个字节,这对于unicode来说是无效的。这种行为有清晰的文档记录:
strlen()返回字节数,而不是字符串中字符数。
解决方案是使用mb_strlen()
函数代替(mb
代表multi byte
)(参见mb_strlen()文档)。
您要找的是mb_strlen
。
函数strlnen
不计算字符数,而是计算字节数。对于多字节字符,它将返回更高的数字。
使用mb_strlen()
来计算字符的实际数目。
作为参考mb_strlen()
:
如果php.in
设置mbstring.func_overload
将位2设置为1,则strlen
将根据默认字符集计数字符;否则,它将计算字符串