Bon, je viens chercher la solution de facilité.
Voilà 2h que j'essaie de résoudre un bug qui m'a semblé à 1ère vue facile, mais qui résiste !
Explications :
Je souhaite transformer :
en :
D'où la regexp suivante :
preg_replace("^\[g\](.*)\[/g\]^", "<b>$1</b>", $texte); |
Ca marche parfaitement, sauf si 2 ou plus séquences [ g ][ /g ] (sans les espaces) sont sur la même ligne. Exemple :
[g]Bonjour[/g] blabla [g]Salut[/g] |
donne ceci :
<b>Bonjour[/g] blabla [g]Salut</b> |
Evidemment, j'ai bien compris ce qu'il se passait, il s'arrête à la dernière balise trouvée, et enregistre tout ce qu'il y a au milieu dans $1.
Mais, j'ai beau éplucher les docs, je ne trouve pas de solutions.
Une idée ?
Message édité par lalex le 15-04-2005 à 16:55:57