Rechercher : dans
Par :

[regex] remplacer sauf si dans un tag

Dernière réponse le 29 mai 2007 à 17:40:36 Ellis, le 29 mai 2007 à 15:21:26 
 Signaler ce message aux modérateurs

Bonjour,
Je ne maitrise pas bien les expressions régulières (rationnelles ?) et je me demandais si il était possible de faire la chose suivante (dans mon cas avec ereg_replace en php) :

Dans "chaine", remplacer "toto" par "titi" SAUF si toto se trouve à l'intérieur d'un tag, c'est à dire entre "<" et ">" (il peut y avoir d'autres choses, exemple, ne pas remplacer si on a "<http://toto.fr>" ou "<img src='toto.jpg'>.

Merci d'avance aux experts !

Configuration: Mac OS X
Firefox 2.0.0.3

1

 Ellis, le 29 mai 2007 à 17:40:36

Bon, après 2h de recherche sur Google, j'ai trouvé qqchose qui semble bien marcher, mais ne me demandez pas comment ça marche !

$var='toto';
$chaine=preg_replace('/(?!<.*?)(' . preg_quote($var, '/') . ')(?![^<>]*?>)/si', 'titi',$chaine);

(C'est un preg pas un ereg mais ça me va aussi !)

Répondre à Ellis