PHP: strlen - Résultat incorrect pour Signes Diacritiques, Accents et Caractères Unicode
Question de Invité | 30/10/2026 à 15:03
J'utilise la fonction PHP strlen() pour déterminer et vérifier la longueur d'une saisie utilisateur. Malheureusement, cette fonction ne fonctionne que pour les chaînes de caractères qui ne contiennent aucun signe diacritique, accent, tréma ou autre caractère Unicode.
echo strlen("abc"); // résultat: 3
echo strlen("äbc"); // résultat: 4Dans mon script, j'ai besoin du nombre exact de caractères de la string fournie, et je souhaiterais obtenir le résultat "3" aussi bien pour "abc" que pour "äbc".
S'agit-il d'un bug de PHP, ou comment puis-je résoudre ce problème?
Sujets Connexes
MySQL: Sauts de Ligne dans MySQL
Conseil | 0 Commentaires
Réparer des Fichiers Texte avec des Sauts de Ligne Mixtes
Tutoriel | 0 Commentaires
Réécrire Fichiers Texte avec une Longueur de Ligne Fixe
Tutoriel | 0 Commentaires
PHP: Déterminer le Numéro de Semaine
Tutoriel | 0 Commentaires
Quel Animal suis-je dans l’Horoscope Chinois?
Info | 0 Commentaires
Déterminer la Fréquence des Mots dans un Texte
Tutoriel | 0 Commentaires
jQuery: Compter des Caractères de plusieurs Champs de Saisie
Conseil | 0 Commentaires
Avis Important
Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.
Participer
Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.
Un seul caractère peut être codé sur plus d’un octet, selon le codage de caractères utilisé.
Un exemple typique est l'encodage UTF-8, utilisé par la plupart des sites web. Dans cet encodage, les caractères tels que a-z sont représentés par un seul octet, tandis que des caractères comme "ä", "ü" ou "ö" en occupent plusieurs.
La fonction strlen() se contente de compter le nombre d'octets; elle ne prend pas en compte la signification ni l'encodage de ces octets. Par conséquent, il est préférable d'utiliser la fonction mb_strlen() plutôt que strlen().
echo mb_strlen("abc", "utf-8"); // résultat: 3 echo mb_strlen("äbc", "utf-8"); // résultat: 3Contrairement à strlen(), la fonction multibyte mb_strlen() prend en compte l'encodage pour déterminer la longueur réelle de la chaîne en nombre de caractères.
Le premier paramètre correspond à la chaîne que vous souhaitez analyser, tandis que le second permet de préciser l'encodage. Si votre site web utilise l'encodage UTF-8 — ce qui est le cas de la plupart des sites —, vous devez indiquer "utf-8" à cet endroit.
01/11/2026 à 01:05