这是我的问题:我的语言(葡萄牙语)使用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] ....可能吗?
最佳答案
不。
多字节函数必须检查每个字符以确定它占用多少字节(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。