regexp: recherche la présence de n mots dans une chaine

regexp: recherche la présence de n mots dans une chaine - PHP - Programmation

Marsh Posté le 23-05-2003 à 14:46:21    

Salut
 
j'essaye de construire l'expression régulière qui permet de tester la présence de 1 ou plusieurs mots dans une chaine dde caractères et ce dans n'importe quel ordre d'apparition.
 
par ex, si j'ai "chien" et "chat" comme mot, les deux phrases suivante devront marcher: "le chat a mangé le chien" et "le chien cherche le chat".
par contre, "le chat est vert citrouille" doit doit pas passer.
 
ça a pas l'air très dur, mais j'y arrive pas :o
merci!


Message édité par dropsy le 23-05-2003 à 14:47:40
Reply

Marsh Posté le 23-05-2003 à 14:46:21   

Reply

Marsh Posté le 23-05-2003 à 14:56:32    

Moi je ferais ça de manire grossière en charchant les 2 mots.

Reply

Marsh Posté le 23-05-2003 à 15:00:23    

Belgique a écrit :

Moi je ferais ça de manire grossière en charchant les 2 mots.


 
bah oui, j'y ai pensé, mais c'est pas très propre [:proy]  
en plus, j'ai donné un exemple à deux mots, mais dans le cas général c'est n mots (enfin ça ça se règle pas une boucle)
et puis c'est aussi pour ma culture :D

Reply

Marsh Posté le 23-05-2003 à 17:59:31    

dropsy a écrit :

Salut
 
j'essaye de construire l'expression régulière qui permet de tester la présence de 1 ou plusieurs mots dans une chaine dde caractères et ce dans n'importe quel ordre d'apparition.
 
par ex, si j'ai "chien" et "chat" comme mot, les deux phrases suivante devront marcher: "le chat a mangé le chien" et "le chien cherche le chat".
par contre, "le chat est vert citrouille" doit doit pas passer.
 
ça a pas l'air très dur, mais j'y arrive pas :o
merci!  


 
heuuu si tu veux un conseil deja, les chats ca mange pas les chiens  :whistle:

Reply

Marsh Posté le 23-05-2003 à 18:13:30    

dropsy a écrit :

Salut
 
j'essaye de construire l'expression régulière qui permet de tester la présence de 1 ou plusieurs mots dans une chaine dde caractères et ce dans n'importe quel ordre d'apparition.
 
par ex, si j'ai "chien" et "chat" comme mot, les deux phrases suivante devront marcher: "le chat a mangé le chien" et "le chien cherche le chat".
par contre, "le chat est vert citrouille" doit doit pas passer.
 
ça a pas l'air très dur, mais j'y arrive pas :o
merci!  


$varArray=("chien", "chat" ) ;
$tring="" ;
 for ($counter=0;$counter<count($varArray);$counter++)
{
  if ($counter>0)
     $string.= "&&"
  $string.="preg_match(\"/$varArray[$counter]/i\",$TAPHRASE);
 
}
 
eval("if (".$string." )" );
 
 Bon je te donne un aperçu, y a des fautes, mais tu trouveras la solution peut etre grace a ça.

Reply

Marsh Posté le 23-05-2003 à 22:22:04    

samuelp: l'opérateur && existe :??: je l'ai vu nul par dans les tuto que j'ai lu. merci j'essaye lundi matin :)
 
orazur: ça dépend du chat  :o

Reply

Marsh Posté le 26-05-2003 à 00:07:38    

petit up du dimanche soir :bounce:

Reply

Marsh Posté le 09-10-2009 à 11:15:50    

bonjour,
voilà une reponse tardive mais qui peut encore servir a d'autres utilisateurs. J'ai amelioré l'idee de samuelp pour qu'elle fonctionne correctement (en utilisant l'operateur  *= qui compile automatiquement le resultat final). Il y a peut etre encore mieux a faire.  Bonne journee.
<?php
$phrase1="le chat a mangé le chien";
$phrase2="le chien cherche le chat";
$phrase3="le chat est vert citrouille";
$tablo= array("chien","chat" );
$maxi=count($tablo);
$resu=1;
for ($x=0;$x<$maxi;$x++) {
  $resu*=preg_match("/$tablo[$x]/i",$phrase1);
}
echo"<br />*****$phrase1****<br />";
if ($resu==1) echo "$resu=contient tout"; else  echo "$resu=contient pas tout";
echo"<br />*****chien & chat****<br />";
?>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed