Remplacement balises bbcode

Description

Cette petite fonction remplace les balises BBCode en des balises html appropriées.
Les spécifications sur phpBB.com sont assez floues (casse, pb d'imbrications, etc)
donc j'ai fait au mieux.
Cette fonction ne vérifie jamais la validité des balises ni leur imbrication, une source récente de malalam le fait je crois.
Elle gère toutes les balises dont les spécifications sont sur http://www.phpbb.com/phpBB/faq.php?mode=bbcode , à l'exception des listes ordonnées.

Source / Exemple :


<?
function BBtags($t) {
	$t = preg_replace("!\[(url|email)\](.+)\/(?:url|email)\!Ui","[$1=$2]$2/$1",$t);
	$t = preg_replace("!\[url=([^\]]+)\](.+)\/url\!Ui","<a href=\"$1\" target=\"_blank\">$2</a>",$t);
	$t = preg_replace("!\[email=([^\]]+)\](.+)\/email\!Ui","<a href=\"mailto:$1\" target=\"_blank\">$2</a>",$t);
	$t = preg_replace("!\[img\](.+)\/img\!Ui","<img src=\"$1\" alt=\"\" border=\"0\">",$t);
	$t = preg_replace("!\[(/?[biu])\]!mi","<$1>",$t);
	$t = preg_replace("!\[color=([^\]]+)\]!mi","<font style=\"color: $1;\">",$t);
	$t = preg_replace("!\[size=([^\]]+)\]!mi","<font style=\"font-size: $1px;\">",$t);
	$t = preg_replace("!\/(?:color|size)\!i","</font>",$t);
	//$q1 et $c1 sont à personnaliser...
	$q1 = "<table align=center border=0 cellpadding=3 cellspacing=1 width=90%><tbody><tr><td><span style=\"font-size : 11px\"><b>";
	$q2 = "</b></span></td></tr><tr><td style=\"font-family: Verdana, sans-serif; font-size: 11px; color: #444444;	background-color: #FAFAFA; border: #D1D7DC; border-style: solid; border-width: 1px\">";
	$q3 = "</td></tr></tbody></table>";
	$t = preg_replace("!\[quote=([^\]]+)\](.+)\/quote\!Umi","$q1 $1 a écrit :$q2 $2 $q3",$t);
	$t = preg_replace("!\[quote\](.+)\/quote\!Umi","$q1 Citation : $q2 $1 $q3",$t);
	$c1 = "<table align=center border=0 cellpadding=3 cellspacing=1 width=90%><tbody><tr><td style=\"font-family: TimesNewRoman, sans-serif; font-size: 11px; color: #444444;	background-color: #FAFAFA; border: #D1D7DC; border-style: solid; border-width: 1px\">";
	$t = preg_replace("!\[code\](.+)\/code\!Umi","$c1 $1 $q3",$t);
	$t = preg_replace("!\[list\](.+)\/list\!Umi","<ul> $1 </ul>",$t);
	$t = preg_replace("!\[\*\](.+)(?=(\[\*\]|</ul>))!Umi","<li>$1</li>",$t);
	return $t;
}
?>

Conclusion :


Ce code peut paraitre banal, mais j'en ai cherché ici je trouvais que sur le forum, et encore certains trucs m'ont pas paru top dans la source concernée (plutôt bizarre niveau regex, et ne gérant pas [list] et [email])

A venir, listes ordonnées et coloration syntaxique dans la balise code.

Dans le zip se trouvent un fichier .php complet qui permet de tester, ainsi qu'un .txt bidon et bariollé pour voir si tout fonctionne bien.

Soyez indulgents, j'ai commencé le php ya 3 jours lol :p
Tout commentaire est néanmoins le bienvenu =)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.