Compter des mots pscefiques dans une phrase en php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Compter des mots pscefiques dans une phrase en php

par desparlsp » 28 juil. 2009, 00:24

Salut,

Merci beaucoup pour ton aide, c'est bien ce que je recherchais depuis des lustres.
Ca marche ....

Bravos :wink:

Merci encore

David

par micetf » 28 juil. 2009, 00:15

Alors cela te conviendra peut-être mieux :
<?php 
function str_incounter($match,$string) {
$count_match = 0;
$match = preg_replace('/[ ]{2,}/',' ',trim($match));
$words = explode(' ',$match);
foreach ($words as $word) {
	for($i=0;$i<strlen($string);$i++) {
	if(strtolower(substr($string,$i,strlen($word)))==strtolower($word)) {
	$count_match++;
	}
	}
}
return $count_match;
}


//on declare les variables pour l'exemple
$match = "   essais   un                numero        ";
$string="voici un essais comptage essais numero un";

//si j'applique la fonction

echo $count_some = str_incounter($match,$string);
?>
Fred

par desparlsp » 27 juil. 2009, 23:58

Salut a Nouveau,

Le script marche mais la il s'agissait d'un exemple.

je fait comment si je ne connais pas les mots a l'avance? (par exemple dans le cadre d'un formulaire en passant par une variable...)

en effet

si je remplace

Code : Tout sélectionner

echo $count_some = str_incounter("essais","un","numero",$string);
par :

Code : Tout sélectionner

$mot="essais un numero"; echo $count_some = str_incounter($mot,$string);
ca ne marche pas.

J'espere que kje suis clair :oops:

Merci

David

par micetf » 27 juil. 2009, 23:43

Peut-être cherches-tu ceci ?
<?php 
function str_incounter() {
$count_match = 0;
$words = func_get_args();
$string = array_pop($words);
foreach ($words as $word) {
	for($i=0;$i<strlen($string);$i++) {
	if(strtolower(substr($string,$i,strlen($word)))==strtolower($word)) {
	$count_match++;
	}
	}
}
return $count_match;
}


//on declare les variables pour l'exemple

$string="voici un essais comptage essais numero un";

//si j'applique la fonction

echo $count_some = str_incounter("essais","un","numero",$string);
?>

Fred

par desparlsp » 27 juil. 2009, 23:37

Salut,

je vais essayer d'etre un peu plus clair.

J'ai la chaine de caractere suivante :

"voici un essais comptage essais numero un";

Je souhaiterais connaitre le nombres additionnes des mots suivant (c'est une exemple )
"essais " et "un".

J'ai cherche et trouve des fonction de comptage de mots specifiques, mais ceux ci ne fonctionnent que si il n'y a qu'un mot. Hors dans l'exemple donne, je souhaiterai trouver une methode qui puisse me comptabiliser l'ensemble des mots voulus. Dans le cas precedent, le total serai de 3 car "essais" apparait 2 fois et "un" 1 fois, soit au total 3...

Mais je ne trouve pas.

Merci

David

Re: Compter des mots pscefiques dans une phrase en php

par thehawk » 27 juil. 2009, 23:23

ca ne marche pas car cette fonction ne fonctionne que sur un seul mot. Hors je voudrais pouvoir trouver un moyen pour que le code ou un autre m'indique 3.
Et je n'ai pas reussi a trouver la moindre fonction ou script qui puisse faire cela malgre mes recherche.
Salut a toi , j'ai pas compris ton souci , car n'importe quelle fonction ne te retournera jamais , alors que dans la phrase il n'y a qu'une occurrence !

Bonne nuit Hawk

Compter des mots pscefiques dans une phrase en php

par desparlsp » 27 juil. 2009, 23:17

Bonjour a tous,

J'ai trouve la fonction suivante qui permet de compter le nombre de mots specifiques dans une chaine en php :

code:

Code : Tout sélectionner

<? function str_incounter($match,$string) { $count_match = 0; for($i=0;$i<strlen($string);$i++) { if(strtolower(substr($string,$i,strlen($match)))==strtolower($match)) { $count_match++; } } return $count_match; } //on declare les variables pour l'exemple $mot="essais"; $string="voici un essais comptage essais numero un"; //si j'applique la fonction echo $count_some = str_incounter($mot,$string); ?>
J'obtiens bien le nombre 2, car le mot "essais" apparait bien deux fois.

Mais je n'ai pas reussi a trouver une fonction similaire qui puisse traiter plusieurs mots.

Par exemple dans l'exemple precedent, si j'applique la variable
$mot="essais numero";

ca ne marche pas car cette fonction ne fonctionne que sur un seul mot. Hors je voudrais pouvoir trouver un moyen pour que le code ou un autre m'indique 3.
Et je n'ai pas reussi a trouver la moindre fonction ou script qui puisse faire cela malgre mes recherche.

je precise que je ne suis pas un pro.

Merci pour vos aides.

David

Ps : Desole pour les accents, j'ecris avec un QWERTY.