Oto mój problem: Mój język (portugalski) używa kodowania znaków ISO-8859-1! Gdy chcę przejść znak z łańcucha jak „Coracao” (serce) używam:Istnieje prosty sposób na uzyskanie znaku z ciągu wielobajtowego w PHP?
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/>";
ta produkuje:
c o r a ç ã o
Działa to dobrze ... Ale mój problem jest wtedy, gdy wykorzystanie Funkcja mb_substr nie jest szybka jak zwykły dostęp do zwykłego ciągu! Ale chcę prosty sposób to zrobić .... jak w normalnym dostępie znaków ciąg: echo $ str [$ pos] .... Jest to możliwe?
Cóż ... Ale moje pytanie jest o skuteczny sposób wykonać te dostępy. Przetestowałem normalną ciągłą pętlę konkatenacji ($ new_str. = $ Old_str [2] - tylko do testowania ...) i używając mb_substr ($ new_str. = Mb_substr ($ old_str, 2, 1, 'UTF-8') i I mam to (z pętlą 50 000 iteracji): 0.016 s do normalnego dostępu do 4.9802091121674 s do funkcji mb_substr! To jest poważny problem z wydajnością –
Przy kodowaniu ze stałą szerokością można użyć stałego mnożnika –
Jak mogłem to zrobić? Pokaż mi przykład! –