IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Compter le nombre d'occurences d'un mot [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut Compter le nombre d'occurences d'un mot
    Salut,

    J'aimerais compter le nombre d'occurences d'un mot dans une chaine en PHP. Comment y procéder, si possible sans regex ?

    Merci d'avance

  2. #2
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Tu peux utiliser la fonction substr_count(taChaine , tonMot)
    Pour plus d'infos substr_count

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par makmaoui
    Tu peux utiliser la fonction substr_count(taChaine , tonMot)
    Pour plus d'infos substr_count
    Merci je vais essayer

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut rechercher un mot, et pas une suite de caractères
    la fonction substr_count(taChaine , tonMot) recherche une suite de caractères, et non pas un "mot" dans le sens suite de caractères separés par des espaces ...

    Quelqu'un a t il une idée sur comment exclure d'une requete substr_count('le possible' , 'le') le "le" contenu dans "possible" ...

    Cette requete renvoie "2" ... alors que je cherche à ce qu'elle ne renvoie que "1" ...

    Merci !

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $string = 'le possible';
    $nbOccurrences = preg_match_all('~\ble\b~i', $string, $matches);

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Génial, ca marche !
    Merci Julp ...

    Pour ne pas rester ignare, peut tu m expliquer ce que signifie la balise
    " ~\b" et "\b~i" ?

    Indique t elle au serveur d'exclure les occurences au contact d'autre caractères ?
    ou indique-t-elle uniquement de considérer seulement les occurences au contact d' espaces ?

    Comment formulerais tu une requete pour ne compter que les occurences ou le " le " est en fin de mot ? en debut ? au milleu ?

    Merci de ta contribution super rapide sur ce vieux topic

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    ~ : c'est le caractère délimiteur, il marque le début et la fin du motif
    \b : c'est bien 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

    Citation Envoyé par billbao1987 Voir le message
    Comment formulerais tu une requete pour ne compter que les occurences ou le " le " est en fin de mot ? en debut ? au milleu ?
    Ça ne fonctionnera pas avec les bases de données : le but n'est pas le même et elles n'utilisent pas le même moteur que PHP (PCRE).

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Merci de ces quelques précisions qui me permettent de comprendre ce que j'insère dans mon code !

    Je ne vois pas le probleme pour une compatibilité mysql ...

    Du moment que ma chaine de caractère a été converti en variable php,
    je peux tout à fait la traiter !

    Merci !

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Ah, ok.

    En fin de mot : \Ble\b
    En début de mot : \ble\B
    En plein dans un mot : \Ble\B

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Merci !

    En l'état d'avancement des choses, je recherche à compter le nbre d'occurence d'un mot dans un txt ( ça c bon on a réussi) puis à remplacer chaque occurence par un autre motif:

    j'ai essayé de réutiliser la syntaxe de "description de motif " que tu m'a trouvé au sein d'un str_replace comme suit:

    $string = il fut très futé
    echo str_replac(" ~\bfut\b~i", "est", $string);

    j'aimerais qu'il me renvoie "il est très futé" et surtout pas qu'il renvoie "il est très esté" ^^

    pour l'instant ça ne fonctionne pas,
    aucun message d'erreur, mais la chaine traitée par le str_replac est la même que la chaine donnée ... j'en conclu donc que la fonction ne repère pas le motif, et donc que str_replac ne comprend pas les ~\b ...

    T'as une idée ?

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il n'y a que les fonctions preg_* qui prennent en charge les expressions régulières (pcre). Donc c'est plutôt vers preg_replace que vous devez vous tourner pour cela.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compter le nombre d'occurences d'un mot dans une table
    Par Scots dans le forum Requêtes
    Réponses: 0
    Dernier message: 11/03/2011, 09h36
  2. Compter le nombre d'occurence d'un mot
    Par slyz0r dans le forum Administration système
    Réponses: 9
    Dernier message: 20/07/2010, 23h58
  3. Réponses: 5
    Dernier message: 08/04/2010, 15h47
  4. Compter le nombre d'occurences d'un mot dans un texte
    Par AlexandraS dans le forum Langage
    Réponses: 13
    Dernier message: 26/03/2008, 09h12
  5. Réponses: 8
    Dernier message: 18/01/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo