[Javascript] Regex BBCode to HTML
Résolu
Dinheru
Messages postés
1019
Date d'inscription
Statut
Membre
Dernière intervention
-
test -
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 :
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 !!
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
-
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 -
merci a toi ça marche avec quelque modif !