Regex : limiter à une occurence

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 : Regex : limiter à une occurence

par katagoto » 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"

par guilt92 » 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.

par katagoto » 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

++

Regex : limiter à une occurence

par guilt92 » 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.