这是我的问题:我的语言(葡萄牙语)使用ISO-8859-1 char编码!当我想从“coração”(心)这样的字符串访问字符时,我使用:

mb_internal_encoding('ISO-8859-1');
$str = "coração";

$len = mb_strlen($str,'UTF-8');

for($i=0;$i<$len;++$i)
    echo mb_substr($str, $i, 1, 'UTF-8')."<br/>";

这将产生:

C
Ø
[R
一种
C
一种
Ø

效果很好...但是我的问题是,如果mb_substr函数的使用速度不如简单字符串的正常访问速度快!但是我想要一种简单的方法来执行此操作。...就像在普通的字符串字符访问中一样:echo $ str [$ pos] ....可能吗?

最佳答案



不。

  • The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
  • Premature optimization

  • 多字节函数必须检查每个字符以确定它占用多少字节(UTF-8中为1到4)。在那里,您立即就有字符索引($a[n])无法正常工作的原因:在读取第n个字符之前,您不知道需要获取哪个字节。

    为了加快速度,您可以在此处查看答案:How to iterate UTF-8 string in PHP?

    但是,由于使用的是ISO 8859-1或Latin-1,因此根本不需要使用mb_函数,因为在编码中,所有字符都是encoded in one byte

    10-08 10:54
    查看更多