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

Eléphant du PHP | 419 Messages

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.
Aucun site en création...

Eléphant du PHP | 419 Messages

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);
Aucun site en création...