Si c'est pour pratiquer, ok. Mais si c'est juste pour obtenir la fonctionnalité, ne réinventez pas la roue. L'analyse n'est pas une tâche facile, et il y a beaucoup de parseurs matures. Bien sûr, je regarderais les paquets PEAR en premier. Essayez HTML_BBCodeParser.
Si vous voulez vraiment faire vous-même, vous avez deux façons:
Habituellement, un mélange des deux est à portée de main. Mais comme les tags peuvent être imbriqués et mal formés, c'est vraiment difficile à coder. Au moins, utilisez un code d'analyseur générique et définissez les champs lexicaux, à partir de zéro, il faudra tout le temps que vous utilisez pour coder le site Web.
BTW: l'aide d'un BBparser ne vous dispense pas de l'entrée désinfectante utilisateur ...
EDIT: Je suis dans une bonne humeur aujourd'hui, est un extrait sur la façon d'utiliser alors voici HTML_BBCodeParser:
// if you don't know how to use pear, you'd better learn that quick
// set the path so pear is in it
ini_set("include_path", ini_get("include_path").":/usr/share/pear");
// include PEAR and the parser
require_once("PEAR.php");
require_once("HTML/BBCodeParser.php");
// you can tweak settings from a ini fil
$config = parse_ini_file("BBCodeParser.ini", true);
$options = &PEAR::getStaticProperty("HTML_BBCodeParser", "_options");
$options = $config["HTML_BBCodeParser"];
// here start the parsing
$parser = new HTML_BBCodeParser();
$parser->setText($the_mighty_BBCode);
$parser->parse();
$parsed = $parser->getParsed();
// don't forget to clean that
echo htmlspecialchars(striptags($parsed));
Utilisez un bloc de code la prochaine fois (* mis 4 places devant le code *) –
Fais attention! Les balises "script" à l'intérieur des balises "pre" vont quand même faire en sorte que le navigateur lance le code javascript. – balpha
Non seulement les scripts, tout élément HTML à l'intérieur d'un élément pré va être traité par le navigateur. pré n'implique pas CDATA. – Quentin