Articles
This document is also available in English
Compter les mots est facile. Il suffit de couper la chaîne de caractères au niveau des espaces. Et des signes de ponctuation. Mais il faut ignorer les tirets. Et puis, est-ce que tout cela fonctionne encore en espagnol, avec le n-tilde? et en allemand...? Finalement, ce n'est pas si facile.
En fait, si, ça reste facile. Il y a la fonction str_word_count() qui se charge de tout le travail difficile. Elle dispose de deux modes : le premier indique simplement un compte des mots, et le second retourne directement la liste complète des mots qui ont été identifiés.
La fonction procède par regroupement. Elle identifie les mots en recherchant des groupes de lettres qui composent des mots. Cela recouvre évidemment les lettres de l'alphabet, majuscules et minuscules.
preg_split() permet aussi de faire des coupes en fonction des mots, mais de manière moins fine que str_word_count(). On peut notamment utiliser le meta-caractère \b, qui indique une frontière de mot, et qui supporte aussi la configuration locale.
<?php setlocale(LC_ALL, 'fr_FR'); $chaine = 'Ceci est une phrase capilo-tractée.'; print_r(str_word_count($chaine,2)); print_r(preg_split('#\b#', $chaine)); ?> // Notez que les index sont en fait les positions des mots // ce qui permet des remplacements faciles avec substr() Array ( [0] => Ceci [5] => est [9] => une [13] => phrase [20] => capilo-tractée ) Array ( [0] => [1] => Ceci [2] => [3] => est [4] => [5] => une [6] => [7] => phrase [8] => [9] => capilo [10] => - [11] => tractée [12] => . )
A noter
- En mode 1, str_word_count() ne fait que retourner les mots, sans leur position.
- str_word_count() ne connait pas l'orthographe!
- str_word_count() ne connait pas les entités HTML
- count_chars() fait des statistiques sur les octets utilisés
Commentaires
Vous pouvez ajouter votre commentaire! |
Vous devez vous connecter pour commenter


