strlen()
函数无法正确返回字符串长度的utf8字符,例如سلام
是4个字符但是在使用strlen后返回8个字符
<?php
echo strlen('سلام');
?>
答案 0 :(得分:16)
核心PHP字符串函数都假设1个字符= 1个字节。他们没有不同编码的概念。要确定UTF-8字符串中有多少个字符(不是多少个字节),请使用mb_strlen
等效字符并告诉它字符串的编码是什么在:
echo mb_strlen('سلام', 'UTF-8');
答案 1 :(得分:4)
您可以在二进制PHP字符串中获取UTF-8代码点的数量(只要它是有效的UTF-8编码)(Demo):
$length = preg_match_all('(.)su', $subject);
如果安装了多字节扩展程序,也可以使用它:
$length = mb_strlen($subject, 'UTF-8');