Expression reguliéres

Neohh56
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 11:53

Bonjour tout le monde ;)

Voila j'ai un probleme je souhaite remplacer du bbcode dans une chaine par l'equivalent html.

Pour cela j'utilise les expressions régulières mais j'ai un petit soucis en fait j'ai un texte :

bla bla bla bla [color=#cccccc]transmettre [/color]bla bla [color=#ffffff]tout [/color]au long de leur [color=#ff6600] bla bla [/color]sur le [color=#ff0000]terrain[/color].


et donc je souhaite remplacer par exemple [color=#cccccc]transmettre [/color] par <span color='#cccccc'> transmettre </span>

J'ai fait ce code :

[code]/* Je construis l'expression regulière*/
$exp_reg="\[color=#([0-9a-zA-Z]{1,6})\](.*)\[/color\]";

// Remplacement
$txt=eregi_replace($exp_reg,"<span color='#\\1'>\\2</span>",$txt);[/code]

Le soucis est que cela remplace bien le premier color mais cela met le </span> a la fin de tout le texte et donc ne remplace pas tout les autre color.

Voila en esperant avoir ete assez clair.

Merci de votre aide.

@++

ps:j'ai du désactiver le bbcode dans le message

ViPHP
ViPHP | 1996 Messages

27 mai 2010, 13:38

Je ne suis pas expert mais je crois qu'il faille protéger ton # au centre et tu as deux parathèses capturantes.

Code : Tout sélectionner

$exp_reg="\[color=#([0-9a-zA-Z]{1,6})\](.*)\[/color\]";
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Neohh56
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 13:55

J'ai tester mais c'est pareil :(

ViPHP
ViPHP | 5462 Messages

27 mai 2010, 14:05