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
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
Tu peux utiliser la fonction substr_count(taChaine , tonMot)
Pour plus d'infos substr_count
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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $string = 'le possible'; $nbOccurrences = preg_match_all('~\ble\b~i', $string, $matches);![]()
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![]()
~ : 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
Ç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).
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 !
Ah, ok.
En fin de mot : \Ble\b
En début de mot : \ble\B
En plein dans un mot : \Ble\B
![]()
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 ?
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager