Preg_match_all

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 : Preg_match_all

Re: Preg_match_all

par Invité » 13 sept. 2010, 03:23

Merci à tous pour votre aide.

Finnalement j'ai laissé tomber les expressions régulières et j'ai codé à la dure un petit explode qui fonctionne comme ceci :
$mots = explode(" ",$q);
$or_found = array();
foreach($mots as $key=>$val){
	if($val =='OR'){
		$or_found[] = $mots[$key -1]; // Va mettre le mot précédent au OR dans le array
		$or_found[] = $mots[$key +1]; // Va mettre le mot suivant au OR dans le array
	}
	
}
//ont vérifie si il existe des résultats
if(count($or_found) > 0){
  print_r(array_unique($or_found)); //ici nous montre les résultats et supprime les doublons car chat OR chien OR poule donnera 2 chien !
// normalement ici vient mon code et non pas un simple print_r() !
}



Re: Preg_match_all

par Ryle » 12 sept. 2010, 09:50

Si tu n'as pas d'autres contraintes que de récupérer ce qui est entre les "OR", un simple explode(' OR ', $taChaine) devrait tout aussi bien faire l'affaire non ? :)

Re: Preg_match_all

par stealth35 » 12 sept. 2010, 05:42

et ca :

\b[^OR\s]+\b

Re: Preg_match_all

par keny » 12 sept. 2010, 03:28

Voila ce que donne le code pour chacune des requetes
//pizza pain chien OR Chat OR piano -macaroni
Array ( [0] => Array ( [0] => chien OR Chat ) [1] => Array ( [0] => chien ) [2] => Array ( [0] => Chat ) ) 
//ici nous avons bien chien et chat mais pas piano !
//chat OR chien -lapin
Array ( [0] => Array ( [0] => chat OR chien ) [1] => Array ( [0] => chat ) [2] => Array ( [0] => chien ) ) 
//ici sa fonctionne !
//poule OR coq OR lapin OR vache
Array ( [0] => Array ( [0] => poule OR coq [1] => lapin OR vache ) [1] => Array ( [0] => poule [1] => lapin ) [2] => Array ( [0] => coq [1] => vache ) ) 
// ici sa fonctionne !
Merci pour votre temps et votre aide.

Re: Preg_match_all

par Aureusms » 11 sept. 2010, 11:46

Et que donne :
preg_match_all('~(([^ ]+) OR ([^ ]+)+)~', $q, $or);

Re: Preg_match_all

par Invité » 11 sept. 2010, 05:20

Désoler je n'ai pas utilisé la bonne balise [ PHP ] !!!

Preg_match_all

par keny » 11 sept. 2010, 05:19

Bonjour à tous,

J'essaie de récupérer avec l'aide d'un preg_match_all des termes "OR" provenant d'une requête de recherche.

Quelques exemples de recherche ...
pizza pain chien OR Chat OR piano -macaroni
chat OR chien -lapin
poule OR coq OR lapin OR vache

Bref, le but est de récupéré les termes compris entre les OR et les stocké dans un tableau J'y arrive avec un seul OR mais je suis incapable d'y arriver si la requête comporte plusieurs OR.

Voici mon code :

Code : Tout sélectionner

preg_match_all('~([^ ]+) OR ([^ ]+)~', $q, $or);
Avez-vous une suggestion ?

Merci