11 Vote

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: 4

Dans 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?

RépondrePositifNégatif
1Meilleure Réponse1 Vote

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: 3

Contrairement à 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

RépondrePositif Négatif
Répondre

Sujets Connexes

MySQL: Sauts de Ligne dans MySQL

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.