Pourquoi préférer les fonctions mbstring de PHP ?

Utiliser mbstring de PHP

Cela fait plusieurs fois que moi ou des collègues rencontrent des problèmes liés au multibytes dans les chaînes de caractères.

Pour expliquer rapidement des problématiques récurrentes c’est par exemple avec strlen :

echo strlen("toto");
# 4

echo strlen("tôto");
# 5

echo mb_strlen("tôto");
# 4

echo mb_strlen("toto");
# 4
Exemple des différences entre les fonctions mbstring des natives de PHP

Je pense que vous avez tout de suite compris la problématique et donc les bugs que cela peut générer.

C’est pourquoi il est généralement préférable d’utiliser les fonctions mbstring (multi-byte string) de PHP plutôt que les fonctions de manipulation de chaînes de caractères sans mbstring pour plusieurs raisons liées à la gestion des caractères multioctets, notamment les caractères non-ASCII et les encodages de caractères différents.

Voici les principales raisons pour lesquelles je vous recommande d’utiliser mbstring :

  1. Support des caractères multioctets : Les fonctions mbstring sont conçues pour manipuler correctement les chaînes de caractères qui contiennent des caractères multioctets, comme ceux en UTF-8, qui est largement utilisé pour représenter des caractères internationaux. Les fonctions standards de PHP (strlen, substr, etc.) peuvent mal interpréter ces longueurs.
  2. Gestion des encodages variés : mbstring permet de spécifier l’encodage de caractères utilisé dans les opérations sur les chaînes. c’est crucial pour les applications multilingues où les chaînes peuvent être dans différents encodages. Sans mbstring, les fonctions standards de PHP gèrent mal cela. Vous pouvez tester avec les fonction strtoupper et strtolower.
  3. Compatibilité avec les caractères internationaux : Avec l’augmentation des applications web multilangues, il est essentiel de pouvoir manipuler correctement les caractères de différentes langues. mbstring assure une meilleure prise en charge des caractères internationaux, ce qui est essentiel pour offrir une expérience utilisateur de qualité.
  4. Précision et sécurité : Cela réduit le risque de bugs et d’erreurs dans les applications manipulant des textes multilingues ou des caractères spéciaux.

Si vous avez d’autres arguments n’hésitez pas à les partager en commentaire !

Après Gitleaks, dans un prochain article je vous présenterais comment forcer cela dans votre pipeline de CI pour éviter d’en subir les conséquences plus tard !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *