strlen() php 函数给出了错误的 unicode 字符长度

问题描述 投票:0回答:4

我正在尝试获取此 unicode 字符字符串的长度

$text = 'نام سلطان م';
$length = strlen($text);
echo $length;

输出

20

如何确定unicode字符串的长度?

php strlen
4个回答
48
投票

strlen()
不适用于多字节字符,因为它假定 1 个字符等于 1 个字节,这对 unicode 来说是无效的。这种行为是明确记录

strlen() 返回字符串中的字节数而不是字符数

解决方案是使用

mb_strlen()
函数代替(
mb
代表
multi byte
)(see mb_strlen() docs)。


5
投票

您正在寻找

mb_strlen
.


3
投票

功能

strlnen
不统计字符数,而是统计字节数。对于多字节字符,它将返回更大的数字。
使用
mb_strlen()
来计算字符的实际数量。


0
投票

作为参考

mb_strlen()
的其他答案的附录:

如果

php.in
设置
mbstring.func_overload
的位 2 设置为 1,那么
strlen
将根据默认字符集计算 characters;否则它将计算字符串中bytes的数量

© www.soinside.com 2019 - 2024. All rights reserved.