utf8字符串长度

Dol*_*rma 8 php string utf-8

strlen()php中的函数无法正确返回字符串长度的utf8字符,例如????是4个字符但是在使用strlen后返回8个字符串

<?php
echo strlen('????');
?>
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 17

核心PHP字符串函数都假设1个字符= 1个字节.他们没有不同编码的概念.要确定UTF-8字符串中有多少字符(不是多少字节),请使用mb_strlen等效字符并告诉它字符串的编码:

echo mb_strlen('????', 'UTF-8');
Run Code Online (Sandbox Code Playgroud)


hak*_*kre 5

您可以获取二进制 PHP 字符串中 UTF-8 代码点的数量(只要它是有效的 UTF-8 编码)(Demo):

$length = preg_match_all('(.)su', $subject);
Run Code Online (Sandbox Code Playgroud)

如果安装了多字节扩展,也可以使用它:

$length = mb_strlen($subject, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

另请参阅:PHP UTF-8 字符串长度