[JS] Regex : parseur BBCode

Regex : parseur BBCode [JS] - HTML/CSS - Programmation

Marsh Posté le 30-01-2008 à 15:05:23    

Salut,  
J'aimerais faire un parseur BBCode => HTML, pour cela, j'ai trouvé la méthode replace qui me permet de tranformer une chaine :

Code :
  1. 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 :

Code :
  1. [\b]Texte en gras[\/b] Texte normal [\b]deuxième texte en gras[\/b]


il me retourne :

Code :
  1. <strong>Texte en gras[\/b] Texte normal [\b]deuxième texte en gras</strong>


au lieu de

Code :
  1. <strong>Texte en gras</strong> Texte normal <strong>deuxième texte en gras</strong>


comme ce qui se passe avec cette regex en php :

Code :
  1. $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

Reply

Marsh Posté le 30-01-2008 à 15:05:23   

Reply

Marsh Posté le 30-01-2008 à 15:07:57    

(.+?) à la place de (.+)


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 30-01-2008 à 21:07:58    

Merci, ca marche avec ca.  :D  
 
J'ai maitenant un autre problème, j'aimerais créer une iframe dynamiquement avec createElement :

Code :
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. <!--
  5. function mk_iframe() {
  6. ma_frame = document.createElement('frame');
  7. document.body.appendChild(ma_frame);
  8. ma_frame.contentWindow.document.body.innerHTML = 'Test';
  9. }
  10. -->
  11. </script>
  12. </head>
  13. <body>
  14. <span onclick="mk_iframe();">Creer une iframe</span>
  15. </body>
  16. </html>


 
Mais evidemment ca marche pas ...
Vous avez encore la solution ?
Merci  :)


Message édité par Rapha222 le 30-01-2008 à 21:11:33
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed