[RESOLU] Regex : S'arrêter à la première chaine qui suit..

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 : [RESOLU] Regex : S'arrêter à la première chaine qui suit..

Re: Regex : S'arrêter à la première chaine qui suit..

par the_grinch » 03 déc. 2013, 09:39

J'ai trouvé !

Je dois rajouter un "U" pour dire qu'on veut l'expression minimale, et le i pour prendre aussi si c'est mal écrit avec des majuscules dans les balises :
preg_match("#color=\"\#4B0082\">(.+)</font>#Ui", $ligne, $matches);

Regex : S'arrêter à la première chaine qui suit..

par the_grinch » 03 déc. 2013, 00:05

Salut,
Voici ma commande regex :
echo preg_match("#color=\"\#4B0082\">(.+)</font>#", $ligne, $matches);
Ma ligne est du style :
<font color="#4B0082">BLABLA1</font><font color="#8B8455">BLABLA2</font><font color="#6B8990">BLABLA3</font>
Mais l'ordre varie en fonction des lignes donc je ne peux pas faire de regex en prenant la suite...

Lorsque j'utilise ma commande, $matches est : BLABLA1</font><font color="#8B8455">BLABLA2</font><font color="#6B8990">BLABLA3
au lieu de : BLABLA1

Il ne s'arrête pas au premier </font> mais il continue jusqu'à la fin...

Comment lui dire de s'arrêter au premier qu'il rencontre ?
Je ne peux pas mettre de contrainte sur le nombre : (.+){n} car n varie entre les lignes...

Bref vous l'aurez compris, j'essaie de récupérer chaque texte en fonction de la couleur.

Merci ;)

PS : je continue de chercher sur le net, je reviendrai comme d'habitude le mettre sur le forum si je trouve avant.

Je sais que ce que je fais est possible en php orienté objet mais j'aimerai le faire à la façon dont j'ai appris avant de me lancer dans l'OO.