Nombre d'occurence d'un mot dans une chaine

hadjir Messages postés 132 Statut Membre -  
 aaa -
Bonjour,
j'ai une question :
j'ai une chaine de caractére composé de plusieurs mots par des virgules.
je cherche comment calculer le nombre d'occurence de cette mot dans la chaine en php.
merci de me répondre je cherche une réponse le plutot possible si c'est possible.
merci d'avance
Configuration: Windows XP
Opera 9.63

1 réponse

  1. CesarX
     
    salut,
    tardivement certes mais bon ça pourrait peut être encore servir :
    <?php 
    function retour_nb($chaine, $occurence)
    {
    	preg_match_all('`'.$occurence.'`', $chaine, $table, PREG_SET_ORDER);
    	return count($table);
    }
    
    $chaine='le camion ecrase le zoizo, la conductrice lâche la pédale'; // La chaine sujette
    echo retour_nb($chaine, 'l[e|a]'); // Appel de la fonction avec ta chaine et le mot à rechercher
    ?>
    

    Voilà ici ça compte combien d'occurences de "le" ou "la" se trouvent dans ta chaine.
    0
    1. billbao1987
       
      Salut CesarX,
      je fais actuellement des recherches sur les possibilitées de traitement de textes en php, et ta fonction ma fait découvrir des fonctionalitées PHP que je ne conaissais pas ( mise entre crochets pour recherche soit "le", soit "la" )

      Merci de ta contribution !

      Seule remarque, ta fonction retourne le nombre d occurence d'une suite de caractère l>e ou l>a mais sans respecter la casse ...

      A tu une idée comment intégrer la distinction entre "le" et "possible" ?.

      Merci, Bonne journée !

      Alex, depuis Strasbourg.
      0
      1. billbao1987 > billbao1987
         
        on m' a trouvé la réponse sur un autre forum :)

        pour la requete suivante:

        $nbOccurrences = preg_match_all('le', $string);

        il faut utiliser les délimiteurs de motifs :

        ~ : c'est le caractère délimiteur, il marque le début et la fin du motif
        \b : c'est le délimiteur de mot donc ça signifie qu'on cherche à ce qu'il n'y ait pas de "lettre" avant ou après (suivant sa position)
        i (option) : insensible à la casse


        ce qui donne donc :

        $nbOccurrences = preg_match_all('~\ble\b~i', $string, $matches);

        ainsi, les "possible", "electrictrité" ou encore "lecture" seront ignorés ....
        détails:


        En fin de mot : \Ble\b
        En début de mot : \ble\B
        En plein dans un mot : \Ble\B
        0
    2. aaa
       
      substr_count
      0