Articles

Le mois de la fonction PHP : compter les mots

  • Ecrit par Damien Seguy
  • lundi 09 avril 2007
Image pour le titre du contenu

This document is also available in English en 

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

< Précédent   Suivant >

Commentaires

Vous pouvez ajouter votre commentaire!


Vous devez vous connecter pour commenter