Regex : limiter à une occurence

Mammouth du PHP | 1353 Messages

01 sept. 2008, 13:57

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 1668 Messages

01 sept. 2008, 15:26

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

++
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Mammouth du PHP | 1353 Messages

01 sept. 2008, 15:48

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 1668 Messages

01 sept. 2008, 16:20

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"
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol