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
:
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
:
- 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. - 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. Sansmbstring
, les fonctions standards de PHP gèrent mal cela. Vous pouvez tester avec les fonction strtoupper et strtolower. - 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é. - 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