如何在PHP中获取字符串中的字符数?

如何在PHP中获取字符串中的字符数?,php,string,localization,utf-8,character-encoding,Php,String,Localization,Utf 8,Character Encoding,它是UTF-8。 例如情報 是2个字符,而ラリー ペイジ 是6个字符。使用för多字节字符编码,如UTF-8。您可以使用strlen(utf8\U解码('情報'));代码 $a = "情報"; $b = "ラリーペイジ"; echo mb_strlen($a, 'UTF-8') . "\n"; echo mb_strlen($b, 'UTF-8') . "\n"; 结果 2 6 即使mb_strlen的第二个参数说是可选的,实际上也是需要的,即使为了便于移植,您的内部编码和字符串的编码是相

它是UTF-8。 例如情報 是2个字符,而ラリー ペイジ 是6个字符。

使用för多字节字符编码,如UTF-8。

您可以使用strlen(utf8\U解码('情報'));

代码

$a = "情報";
$b = "ラリーペイジ";

echo mb_strlen($a, 'UTF-8') . "\n";
echo mb_strlen($b, 'UTF-8') . "\n";
结果

2
6

即使mb_strlen的第二个参数说是可选的,实际上也是需要的,即使为了便于移植,您的内部编码和字符串的编码是相同的

mb_strlen('情報', 'UTF-8');

这同样适用于大多数多字节函数,包括mb_substr,因为utf8_解码选项根本不起作用。

当我使用mb_strlen()时,它是6情報 19人ラリー ペイジ仅供参考,在“中有一个空间”ラリー ペイジ" 将使用的编码作为mb_strlen的第二个参数设置为7字符。当我使用mb_strlen()时,它是6字符情報 19人ラリー ペイジ出于某种原因,我得到了mb_strlen的未定义函数:SQuestion Mark,检查您是否在PHP中安装并激活了mbstring扩展。Steven,尝试指定字符串的编码作为mb_strlen的第二个参数。可能它无法自动检测您的编码。哦,顺便说一句,我删除了中的空格ラリー ペイジ这可能会在ISO-8859-1中没有等效字符的字符上得到未定义的结果。代码更改为更“安全”