这是我的问题:我的语言(葡萄牙语)使用 ISO-8859-1 字符编码!当我想从像“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 o r a ç ã o
这工作正常......但我的问题是,如果使用 mb_substr 函数不如简单的字符串正常访问快!但我想要一个简单的方法来做到这一点......就像在正常的字符串字符访问中一样:echo $str[$pos]......这可能吗?
最佳答案
mb_substr function is not fast as [...] like in normal string character access: echo $str[$pos].... It is possible?
没有。
- 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 .
关于php - 在 PHP 中有从多字节字符串中获取字符的简单方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10360764/