[Javascript] Regex BBCode to HTML

Résolu/Fermé
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 - 10 juil. 2007 à 15:19
 test - 5 nov. 2008 à 17:05
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.
A voir également:

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
10 juil. 2007 à 17:21
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
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 67
11 juil. 2007 à 09:42
merci a toi ça marche avec quelque modif !
0
merci et c'est quoi ces "quelques modifs" .... ... .... ....
0