Должен ли я использовать функции mb_ * или iconv_ * для многобайтовых строк?

StackOverflow https://stackoverflow.com/questions/1082780

  •  23-08-2019
  •  | 
  •  

Вопрос

Как и все мы сейчас, обработка многобайтовых строк в PHP не так проста.Например, я хочу получить длину следующей строки: ä

strlen('ä'); // 2, because ä equals 2 bytes
mb_strlen('ä', 'UTF-8'); // 1
iconv_strlen('ä', 'UTF-8'); // 1

Какие функции я должен использовать?mb_* или iconv_*?Почему?Учитывая, что кодировка может не ограничиваться UTF-8.

Заранее спасибо!

Это было полезно?

Решение

Взгляните на эту презентацию Powerpoint:

http://www.nyphp.org/content/presentations/smallworld/April2006-nyphp-Presentation.ppt

В двух словах:Iconv поддерживает больше кодировок, но менее переносим.

Из презентации:

PHP поддерживает многобайтовый в двух Расширения:iconv и mbstring

  • iconv использует внешнюю библиотеку (поддерживает больше кодировок, но меньше переносимый)
  • mbstring имеет библиотеку в комплекте с PHP (меньше кодировок, но больше переносимость)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top