regex

Eléphanteau du PHP | 12 Messages

15 mai 2008, 15:03

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 ;)

Eléphant du PHP | 224 Messages

15 mai 2008, 17:58

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...

à+ :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Eléphanteau du PHP | 12 Messages

16 mai 2008, 14:05

ahh merci beaucoup je me demandais à quoi servait exactement le U ^^

@+
dspe