11548 sujets

JavaScript, DOM et API Web HTML5

Salut,
J'aimerais faire un parseur BBCode => HTML, pour cela, j'ai trouvé la méthode replace qui me permet de tranformer une chaine :
text.replace(/\[b\](.+)\[\/b\]/gi, '<strong>$1</strong>');


Ceci me permet de convertir la balise [\b][\/b] en balise <strong></strong>, mais il y a un problème lorsque je convertit une chaine contenant plusieurs fois les balises :
Avec un chaine de départ comme :
[\b]Texte en gras[\/b] Texte normal [\b]deuxième texte en gras[\/b]

il me retourne :
<strong>Texte en gras[\/b] Texte normal [\b]deuxième texte en gras</strong>

au lieu de
<strong>Texte en gras</strong> Texte normal <strong>deuxième texte en gras</strong>

comme ce qui se passe avec cette regex en php :
$text = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $text);


* j'ai rajouté un \ devant les balises BBCode pour ne pas qu'elles soient prisent en compte par le forum

Merci
Modifié par Rapha (29 Jan 2008 - 18:53)