Page 1 sur 1

regex

Posté : 15 mai 2008, 15:03
par dspe
bonjour à tous,

Voilà mon petit soucis.. j'aimerais nettoyer des chaines de caractères via ereg_replace. Mais je suis confronté à un problème de temps à autres..

voilà un exemple :

Code : Tout sélectionner

$string2= "blablabla <!-- vaderetro santanas :P --> bla --> bla <p>bla bla bla bla </p> </p>"; $string2 = ereg_replace("(<!--)(.*)(-->)", "", $string2);
et le resultat obtenu est
blablabla bla <p>bla bla bla bla </p>
alors que je souhaiterais obtenir
blablabla bla --> bla <p>bla bla bla bla </p>
Quelqu un a t il une idee?

merci d avance.

--
UP.

bon je viens de trouver la solution:

Code : Tout sélectionner

$string2 = preg_replace("(<!--[^>]+-->)", "", $string2);
voili voulou ;)

Re: regex

Posté : 15 mai 2008, 17:58
par FredoMkb
Bonjour :)
bon je viens de trouver la solution:

Code : Tout sélectionner

$string2 = preg_replace("(<!--[^>]+-->)", "", $string2);
Oui, ça a l'air parfait... il y avait aussi cette syntaxe :
$string2 = preg_replace("#<!--(.*)-->#U", "", $string2);
Ici, l'option "U", après le délimiteur "#", exécute une recherche non gourmande, c'est à dire que dès que le premier masque est trouvé, alors il arrête de chercher d'autres occurrences de fin et repart pour une nouvelle recherche du masque entier.

Bon, cette alternative s'avère être beaucoup plus lente que celle que tu as trouvé, mais la méthode avec l'option "U" peut parfois rendre service...

à+ :)

Posté : 16 mai 2008, 14:05
par dspe
ahh merci beaucoup je me demandais à quoi servait exactement le U ^^

@+
dspe