|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Salut a tous,
j'ai besoin d'aide pour une regex. En faites j'ai une chaine de caractère dans laquelle je veut tester la présences de plusieurs motclé (le nombre est variable, je les stock dans un tableaux). Je veut donc faire un preg_match sur cette ligne en testant si CHACUN des motclès est bien présents. Jusque la c'est facile, le seul problème c'est comment faire pour dire que l'ordre d'apparition du mot n'a pas d'importance? En gros je veut faire comme les LIKE %motcle% de SQL. Vous avez des idées? |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Giuseppe DamianiDéveloppeur Web Inscription : décembre 2003 Messages : 76 ![]() |
preg_match('/mot01|mot02|mot03|mot04/g', $text);
|
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
a oki merci, mais ca ne fera pas exactement ce que je veut. Car je veut que chaque mot soit présent.
Par exemple j'ai une chaine de caractère dans laquelle je veut savoir si il ya mot1, mot2 et mot 3. Il doit donc me renvoyer true pour les motif suivant: mot1 blabla mot2 bla bla mot3 mot2 blabla mot1 bla bla mot3 mot3 blabla mot2 bla bla mot1 ... Avec cette methode il me renvera true si j'ai ce motif: mot1 blabla mot1 bla bla mot1 alors que je ne le souhaite pas. |
|
|
00
|
|
|
#4 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Citation:
php.net ne connait pas non plus d'ailleurs. Pour ton probleme Death83, a part la methode : Code :
Tu peux faire un OU avec : faire un ET avec : mais difficilement mixer les 2... ou alors tu construit toutes les permutations avant en php et tu balance un truc horrible du genre (j'ai réduit l'exemple a 2 mots, parce que ca devient lourd meme avec 3 ;o)
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|||
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Giuseppe DamianiDéveloppeur Web Inscription : décembre 2003 Messages : 76 ![]() |
En effet, l'option /g n'est pas valide en PHP. Les vielles abitude de Perl.
Pour info, cette option permet de ne pas arrêter la recherche quand l'expression trouve une réponse. On peu ainsi compté combien de foix le mot existe. Plus d'info : http://www.anaesthetist.com/mnm/perl/regex.htm Si non, pour le problème de Death83 je pense que Fladnag a donné toutes les réponses possibles. Salutation |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
ok, je comprends mieux ;o)
en fait, j'en ai peut etre oublié une qui me vient maintenant que tu parles de la signification de l'option g en perl Tu pourrais faire un "ou" (mot1|mot2|mot3) avec un preg_match_all puis recuperer la liste des resultats, dédoublonner le tableau avec array_unique et faire un array_diff pour verifier que tout les mots sont bien présents par rapport a un tableau des mots recherchés (array('mot1', 'mot2', 'mot3'))
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Merci j'ai opter pour la méthode avec plusieurs regex apres je regarde si une d'entre elle est false pour savoir si la chaine est correcte ou pas.
Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com