【发布时间】:2014-10-25 08:05:11
【问题描述】:
我有这个代码:
$string = 'علی';
echo strlen($string);
由于 $string 有 3 个波斯字符,输出必须是 3 但我得到 6。
علی 有 3 个字符。为什么我的输出是 6 ?
如何在 php 中使用 strlen() 来获得真正的输出?
【问题讨论】:
-
使用
mb_strlen()(来自 MBString 扩展)。 -
您的输出是 6,因为
strlen()在不考虑编码的情况下计算字节数。在您的编码(可能是 UTF8)中,每个字符计为 2 个字节。因此,3 个字符的输出将是 = 6 (3 chars * 2 bytes)。 -
我自己跑了
var_dump(mb_strlen('علی'));,但输出还是6?
标签: php strlen multibyte persian