2009-07-04 6 views
2

Как и все мы сейчас, обработка многобайтовых строк не так проста в PHP. Например, я хочу, чтобы получить длину следующей строки: äДолжен ли я использовать функции mb_ * или iconv_ * для многобайтовых строк?

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

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

Thx заранее!

ответ

5

Посмотрите на это Powerpoint презентации:

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

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

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

PHP поддерживает несколько байт в двух расширений: Iconv и MBstring

  • Iconv использует внешнюю библиотеку (поддерживает больше кодировок, но менее портативный)
  • MBstring имеет библиотеку в комплекте с PHP (меньше кодировок, но более )
+0

thx! другой pro для mbstring - это то, что есть намного больше функций, таких как mb_strtoupper, mb_strtolower и т. д. –