Noter:
5/5 (1)
Ajouté/Modifié le 2024-12-08
Visionné 6949 fois
Comment compter les caractères d'une chaîne : différentes méthodes
Description
Afin de compter le nombre de caractères dans une chaîne en PHP, vous pouvez utiliser plusieurs fonctions suivant votre utilisation, les fonctions que je vais vous montrer mesurent la longueur des chaînes de différentes manières. Voici une comparaison pour vous aider à comprendre laquelle est "mieux" selon vos besoins.
strlen() : compte le nombre d'octets dans une chaîne
Doc PHP :
strlen()
Avantages :- Très rapide.
- Parfait pour les chaînes en ASCII pur (par exemple, sans caractères Unicode).
Inconvénients :- Ne gère pas correctement les caractères Unicode.
- Par exemple, un caractère comme à représente 2 octets, les émojis aussi peuvent occuper plusieurs octets, donc le résultat ne correspond pas au nombre de caractères visibles.
Exemples strlen()
$str = "abcdef";
strlen($str); // 6
$str = "à";
strlen($str); // 2
Pour solutionner le problème du deuxième exemple, utilisez
mb_strlen() :
Exemples mb_strlen()
$str = "à";
mb_strlen($str); // 1
Avantages :- Gère correctement les caractères multioctets (par exemple, Unicode).
- Suffisant pour la plupart des cas où l'on veut une longueur logique d'une chaîne Unicode.
Inconvénients :- Ne tient pas compte des graphemes combinés (comme un émoji ou un caractère accentué combiné).
- Par exemple, un caractère combiné comme é́ (lettre é + accent) ou un émoji complexe peut être compté comme plusieurs caractères.
$str = "👩👩👧👦"; // Un seul grapheme
echo mb_strlen($str); // Résultat : 7 (compte les unités de code Unicode)
Mais alors, qu'est ce qu'un graphème ?
Un graphème est ce que l'utilisateur voit comme un seul caractère, même si, en termes de codage informatique (comme Unicode), il peut être constitué de plusieurs éléments.
Plus exactement, un graphème est l'unité de base d'un système d'écriture qui correspond à une représentation visuelle minimale perçue comme un seul caractère. Cela inclut non seulement les lettres individuelles mais aussi des combinaisons de caractères qui, ensemble, forment une seule entité dans le langage écrit.
Exemples simples
- Lettre unique :
a, b, c sont des graphèmes dans la plupart des langues. - Caractères accentués :
• La lettre é peut être un graphème unique, mais elle peut être représentée en Unicode soit comme :
•→ Le caractère é (U+00E9).
•→ Une combinaison de e (U+0065) + un accent aigu (U+0301).
• Pour l'utilisateur, c'est un seul graphème. - Émojis :
• Les émojis peuvent être très complexes. Par exemple :
•→ 👩👩👧👦 (famille) est un seul graphème visible, mais il est composé de plusieurs code points Unicode reliés par des caractères invisibles appelés joiners. - Combinaisons spéciales :
• Dans certaines langues comme le hindi, le thaï ou l’arabe, un seul graphème peut inclure plusieurs caractères combinés :
•→ Exemple en hindi : क + ् + ष = क्ष (un seul graphème perçu visuellement).
Parfait donc pour certaines utilisation, la fonction
grapheme_strlen() permet de compter chaque graphème.
grapheme_strlen() : compte le nombre de graphème dans une chaîne
Dans les applications web actuelles, où les émojis et les chaînes multilingues sont courants, grapheme_strlen est la meilleure solution pour compter correctement les caractères visibles.
Exemple grapheme_strlen()
$str = "👩👩👧👦"; // Un seul grapheme
echo grapheme_strlen($str); // Résultat : 1
iconv_strlen() : alternative à mb_strlen()
La fonction
iconv_strlen() en PHP est une autre alternative pour mesurer la longueur d'une chaîne, conçue pour gérer les chaînes multioctets (comme celles en UTF-8), elle utilise l'extension
iconv, qui prend en charge différents encodages de caractères.
Quand utiliser iconv_strlen ?
- Pour compter les caractères Unicode (code points) :
Si vous avez besoin d'une alternative à mb_strlen et que l'extension iconv est déjà utilisée dans votre projet. - Pour des encodages spécifiques :
Si vous travaillez avec des chaînes dans des encodages non pris en charge par mb_strlen, comme certains encodages spécifiques à iconv.
Exemple iconv_strlen()
$str = "é";
echo strlen($str); // Résultat : 2 (é en UTF-8 = 2 octets)
echo iconv_strlen($str); // Résultat : 1 (1 caractère visible)
Par rapport à mb_strlen :
- iconv_strlen et mb_strlen sont similaires dans leur capacité à compter les caractères multioctets.
- Cependant, mb_strlen dépend de l'extension mbstring, tandis que iconv_strlen utilise l'extension iconv. Ces extensions peuvent avoir des comportements légèrement différents, en particulier pour les caractères invalides ou les encodages spécifiques.
count(str_split($str)) : méthode farfelue 😅
$str = "abcdef";
count(str_split($str)); // 6
//Vous l'aurez compris, c'est une boutade, mais fonctionnelle !
J'espère que ce script gratuit vous est utile.
Pour soutenir mon travail,
un simple don ou
mettre une note est grandement apprécié.
Votre réussite en ligne commence ici
Vous cherchez à pousser encore plus loin vos idées ou à les concrétiser avec un site internet sur mesure ? Je suis là pour vous aider ! Mon expérience en développement web est à votre disposition.
Que ce soit la création de votre site web pro ou l'apport de fonctionnalités avancées à votre projet, contactez-moi pour en discuter et avoir un devis gratuit personnalisé.
Mon objectif est de vous offrir des solutions sur mesure qui répondent à vos besoins, et votre vision associée à mon expertise donnera vie à votre projet web parfait. Contactez-moi aujourd'hui, je réponds en général en moins d'une heure :
Demander un devis
Réponse rapide !
Commentaires
Ajoutez un commentaire, soyez le premier !
Retour à la liste des scripts