Page 1 sur 1

Regex : limiter à une occurence

Posté : 01 sept. 2008, 13:57
par guilt92
Bonjour,

J'essaye de faire grace aux expressions reguliere cette simple opération :

j'ai une chaine contenant par exemple :

Code : Tout sélectionner

<a href="url1" target="_blank">Prénom1 Nom1</a><br/> <a href="url2" target="_blank">Prénom2 Nom2</a><br/> <a href="url3" target="_blank">Prénom3 Nom3</a><br/>
Ce que je veux c'est simplement à partir de url2 supprimer toute la ligne

Code : Tout sélectionner

<a href="url2" target="_blank">Prénom2 Nom2</a><br/>
Le but etant d obtenir apres traitement :

Code : Tout sélectionner

<a href="url1" target="_blank">Prénom1 Nom1</a><br/> <a href="url3" target="_blank">Prénom3 Nom3</a><br/>
J'ai donc tenté cela :
$str = '<a href="url1" target="_blank">Prénom1 Nom1</a><br/><a href="url2" target="_blank">Prénom2 Nom2</a><br/><a href="url3" target="_blank">Prénom3 Nom3</a><br/>';

$str =  eregi_replace("<a href=\"url2\".*</a><br/>?"," ",$str);
Mais cela supprime tout à partir de l'occurence trouvée, jusqu a la fin de la chaine. J'ai essayé de limiter avec des ? des {1} mais je n y arrive pas, un petit coup de main serait bienvenue.

Merci.

Posté : 01 sept. 2008, 15:26
par katagoto
Je penses que les POSIX ne sont pas très évolués, tente ça :
$str = preg_replace("#<a href=\"url2\".*</a><br/>#U", "", $str);
L'opérateur non-glouton manquait à l'appel, deplus, tu le remplaçait pas un espace et non par rien pour le supprimer

++

Posté : 01 sept. 2008, 15:48
par guilt92
Merci :D

Effectivement il me manquait le U... (pour l espace c etait juste dans l exemple, mon code était ok)

Entre temps en cherchant de mon coté j avais tenté de résoudre le probleme avec
$str =  eregi_replace("<a href=\"url2\"[^<]*</a><br/>","",$str);
Ce qui fonctionne aussi. Est ce moins bien ? Plus gourmand en ressources ?

Merci.

Posté : 01 sept. 2008, 16:20
par katagoto
Bah je sais que sur tout mes manuel y a écrit que la librarie POSIX est moins aboutis, complètes et performante que la PCRE (il me semble), voilà, j'ai jamais fait de bench, mais je préfert la PCRE...

"C'est vous qui voyez"