我正在尝试获取此 unicode 字符字符串的长度
$text = 'نام سلطان م';
$length = strlen($text);
echo $length;
输出
20
如何确定unicode字符串的长度?
strlen()
不适用于多字节字符,因为它假定 1 个字符等于 1 个字节,这对 unicode 来说是无效的。这种行为是明确记录:
strlen() 返回字符串中的字节数而不是字符数。
解决方案是使用
mb_strlen()
函数代替(mb
代表 multi byte
)(see mb_strlen() docs)。
功能
strlnen
不统计字符数,而是统计字节数。对于多字节字符,它将返回更大的数字。mb_strlen()
来计算字符的实际数量。
作为参考
mb_strlen()
的其他答案的附录:
如果
php.in
设置 mbstring.func_overload
的位 2 设置为 1,那么 strlen
将根据默认字符集计算 characters;否则它将计算字符串中bytes的数量