Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/05/2007, 23h02   #1
Invité régulier
 
Inscription : octobre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 33
Points : 6
Points : 6
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
Shuny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2007, 23h17   #2
Membre éclairé
 
Avatar de makmaoui
 
Développeur Web
Inscription : mai 2007
Messages : 282
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2007
Messages : 282
Points : 361
Points : 361
Tu peux utiliser la fonction substr_count(taChaine , tonMot)
Pour plus d'infos substr_count
makmaoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 00h21   #3
Invité régulier
 
Inscription : octobre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 33
Points : 6
Points : 6
Citation:
Envoyé par makmaoui
Tu peux utiliser la fonction substr_count(taChaine , tonMot)
Pour plus d'infos substr_count
Merci je vais essayer
Shuny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2009, 13h17   #4
Invité régulier
 
Alex
Étudiant
Inscription : avril 2008
Messages : 13
Détails du profil
Informations personnelles :
Nom : Alex
Âge : 25
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 13
Points : 7
Points : 7
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 !
billbao1987 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2009, 14h24   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Code :
1
2
$string = 'le possible';
$nbOccurrences = preg_match_all('~\ble\b~i', $string, $matches);
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2009, 15h05   #6
Invité régulier
 
Alex
Étudiant
Inscription : avril 2008
Messages : 13
Détails du profil
Informations personnelles :
Nom : Alex
Âge : 25
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 13
Points : 7
Points : 7
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
billbao1987 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2009, 15h21   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
~ : 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).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2009, 16h05   #8
Invité régulier
 
Alex
Étudiant
Inscription : avril 2008
Messages : 13
Détails du profil
Informations personnelles :
Nom : Alex
Âge : 25
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 13
Points : 7
Points : 7
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 !
billbao1987 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2009, 16h27   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Ah, ok.

En fin de mot : \Ble\b
En début de mot : \ble\B
En plein dans un mot : \Ble\B
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2009, 18h55   #10
Invité régulier
 
Alex
Étudiant
Inscription : avril 2008
Messages : 13
Détails du profil
Informations personnelles :
Nom : Alex
Âge : 25
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 13
Points : 7
Points : 7
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 ?
billbao1987 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2009, 18h58   #11
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h39.


 
 
 
 
Partenaires

Hébergement Web