2009-07-04 15 views
2

Comme nous le faisons tous maintenant, gérer des chaînes multi-octets n'est pas si simple en PHP. Par exemple, je veux obtenir la longueur de la chaîne suivante: äDois-je utiliser les fonctions mb_ * ou iconv_ * pour les chaînes multi-octets?

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

Quelles fonctions dois-je utiliser? Le mb_ * ou iconv_ *? Pourquoi? Considérant que le codage ne peut pas être limité à UTF-8.

Merci d'avance!

Répondre

5

Jetez un oeil à cette présentation Powerpoint:

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

En bref: Iconv soutient plus encodages, mais elle est moins portable.

De la présentation:

PHP supporte octets multiples en deux extensions: iconv et mbstring

  • iconv utilise une bibliothèque externe (supporte plusieurs codages mais moins portable)
  • mbstring a la bibliothèque fournie avec PHP (moins d'encodages mais plus portable)
+0

thx! un autre pro pour mbstring est, qu'il y a beaucoup plus de fonctions comme mb_strtoupper, mb_strtolower, etc. –