2009-07-04 11 views
2

Wie wir alle jetzt, Umgang mit Multibyte-Strings ist nicht so einfach in PHP. Zum Beispiel möchte ich die Länge der folgenden Zeichenkette erhalten: äSollte ich mb_ * oder iconv_ * Funktionen für Multibyte-Strings verwenden?

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

Welche Funktionen soll ich verwenden? Das mb_ * oder iconv_ *? Warum? Beachten Sie, dass die Codierung möglicherweise nicht auf UTF-8 beschränkt ist.

Danke im Voraus!

Antwort

5

Werfen Sie einen Blick auf diese Powerpoint-Präsentation:

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

Auf den Punkt gebracht: Iconv mehr Kodierungen unterstützt, ist aber weniger tragbar.

Von der Präsentation:

PHP Multi-Byte in zwei Erweiterungen unterstützt: iconv und mbstring

  • iconv verwendet eine externe Bibliothek (unterstützt mehr Codierungen aber weniger tragbar)
  • mbstring hat die Bibliothek mit PHP gebündelt (weniger Codierungen aber mehr tragbar)
+0

thx! ein anderes Pro für Mbstring ist, dass es viel mehr Funktionen wie mb_strtoupper, mb_strtolower, etc. gibt. –