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