problème de regex

kairi78
Invité n'ayant pas de compte PHPfrance

01 mai 2011, 09:05

Bonjour,

Je vous écris car j'ai un problème de regex qui me fait récupérer des données incorectes.
Je vous explique mon problème =(
j'ai 3 types de phrases :

- produit marque modele

ET

- produit marque modelepromotion

ET
- produit marque modele promotion

Mon but est le suivant : récupérer le modèle du produit mais pas n'importe lequel, celui qui a le mot promotion (avec et sans espace).
J'ai donc fait cette regex :

Code : Tout sélectionner

<?php preg_match('#(marque1|marque2|marque3)\s([^\s]+)#i', $gata[2], $matches); $clean = $matches[2]; ?>


grace a cette regex que j'ai trouvé je récupère bien le modele =( mais je récupére tous les modeles et pas ceux de la rubrique "promotion" =(((

qu'est ce que je devrais rajouter a ma regex pour récupérer uniquement les modeles de promotion???

svp est ce que quelqu'un pourrait m'aider ??? merci d'avance car la je patoge =(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 mai 2011, 13:28

La regexp n'est que le "masque" de ce que tu veux récupérer.
Actuellement tu recherches une chaine qui :
- contient marque1, marque2 ou marque3
- suivi d'un espace
- suivi d'une chaine qui ne contient pas d'espace.

Si tu ne veux que ceux pour lesquels la zone "promotion" a une valeur particulière, il suffit de rajouter cette condition dans le masque de ton expression :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...