[Javascript] Regex BBCode to HTML

Résolu
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   -  
 test -
Salut !

Alors voila j'aimerais faire une fonction qui traduit du 'BBCode' en HTML.

Pour le faire j'ai une fonction de la forme :
function BBcodeTranslate(texte)
	{
		table = ["div","table","tr","td","span"];
		for(i=0;i<length(table);i++)
		{
			texte = ;
			regex = '/\['+table[i]+'\w\]';
			texte=texte.replace(regex,"<"+table[i]+" "+texte+">");
		}
	}


Et j'aimerais pouvoir mettre dans ma variable texte l'éventuelle texte qu'il pourait y avoir dans mes balise.
Je m'explique :

- Si j'ai ça [div]coucou[/div] je veux <div>coucou</div> en sortie
- Si j'ai ça [div weight="200px]coucou[/coucou] j'aimerais avoir ça <div weight="200px>coucou</div>

Donc comment faire pour récupérer le weight="200px" dans ma varaible texte ? ( ou tout autre forme de style ! )

Merci d'avance.
--
Mar-plij ur chopinad bier melen !!
Configuration: Windows XP
Firefox 2.0.0.4

2 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Je te propose une expression rationnelle plus complète, qui aura en plus l'avantage de vérifier que la balise ouvrante est bien fermée plus loin.
    regex = '/\['+table[i]+'( .*)\](.*)\[\/'+table[i]\]/';
    Explications : les parenthèses () permettent de mettre en mémoire le bloc en question, dans les variables RegExp.$1, RegExp.$2, etc. (dans l'ordre des parenthèses). Dans un replace, ces variables sont récupérables en mettant simplement $1, $2, ...
    Je précise quand même que j'ai écrit cette expression rationnelle sans la tester, donc il y aura peut-être quelques ajustements à faire, mais le principe est là.

    Donc, si tu as bien suivi, ton code devient :
    function BBcodeTranslate(texte)
    {
    	table = ["div","table","tr","td","span"];
    	for(i=0;i<length(table);i++)
    	{
    		regex = '/\['+table[i]+'( .*)\](.*)\[\/'+table[i]\]/';
    		texte=texte.replace(regex, "<"+table[i]+"$1>$2</"+table[i]+">");
    	}
    }


    Voilà !

    Xavier
    0
  2. Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
     
    merci a toi ça marche avec quelque modif !
    0
    1. test
       
      merci et c'est quoi ces "quelques modifs" .... ... .... ....
      0