2012-01-31 3 views
4

Мой вопрос: В PHP легко ссылаться на одну строку байт, $single = "abc";, например,Каков самый простой способ ссылки на многобайтовую строку в PHP?

echo $single[0]; //"a" 

Однако для многобайтном строки $multi = "äåö", я получаю «нонсенс», то есть,

echo $multi[0]; //? 

Я знаю, что можно ссылаться на отдельные буквы мульти строки байт кодирования следующим образом:

mb_internal_encoding("UTF-8"); 
echo mb_substr($multi,1,1);//which gives the right answer "å" 

Но разве нет более простого способа сделать это? Я особенно ищу способ, которым я могу ссылаться на строку с несколькими байтами с квадратными скобками и только один параметр, как для случая с одним байтом.

+1

Версия нотации массива не является многобайтовой, а просто обрабатывает строку как массив однобайтовых символов. Для доступа подстроки не существует многобайтовой нотации ярлыка. –

+0

Спасибо за отзыв! /William N – BuckyBadger

ответ

2

Нет, поддержка Unicode находится на столе для новых версий, но пока не готова. Вероятно, он доберется туда до некоторой степени, но пока еще нет.

from the manual:

Строка является последовательность символов, где символ это то же самое, что и байт. Это означает, что PHP поддерживает только 256-символьный набор и, следовательно, не предлагает поддержку родного Unicode.

Ближайший вы можете получить на это реализует объект, реализующий ArrayAccess с помощью __toString() функции и много возился. Не рекомендуется, на мой взгляд.

+0

Спасибо за «инсайдерскую информацию»! William N – BuckyBadger

Смежные вопросы