Это моя проблема: Мой язык (португальский) использует кодировку символов ISO-8859-1! Когда я хочу получить доступ символ из строки, как «Coração» (сердце) я использую:Есть простой способ получить символ из многобайтовой строки в 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/>";
Это дает:
c o r a ç ã o
Это прекрасно работает ... Но мой вопрос, если использование Функция mb_substr не является быстрой, как простой стандартный доступ к строке! Но я хочу простой способ сделать это ... как в обычном доступе к строковым символам: echo $ str [$ pos] .... Это возможно?
Ну ... Но мой вопрос о эффективном способе сделать эти доступы. Я проверил обычный цикл конкатенации строк ($ new_str. = $ Old_str [2] - только для тестирования ...) и используя mb_substr ($ new_str. = Mb_substr ($ old_str, 2, 1, 'UTF-8') и I получил (с петлей 50 000 итераций): 0,016 с обычного доступа против 4.9802091121674 с функцией mb_substr! Это большая проблема с производительностью! –
С кодировкой с фиксированной шириной вы можете использовать фиксированный множитель. –
Как я мог это сделать? Покажите мне пример! –