[Php] Comment transformer le BBCode en HTML - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72) +--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27) +--- Sujet : [Php] Comment transformer le BBCode en HTML (/showthread.php?tid=1264) |
[Php] Comment transformer le BBCode en HTML - CyberSee - 17-06-2011 Bonjour à tous ;-) Comme vous le savez, permettre à l’utilisateur de poster du HTML c'est une très très mauvaise idée ... si vous en êtes pas encore convaincu, je vous invite a lire mon tuto sur les failles XSS. L'alternative pour permettre à l’utilisateur de formater leur texte est ce que l'ont nomme couramment le BBCode. C'est ce que nous utilisons ici sur MyBB et dans tous les forums de cette génération. Voici une version simplifier d'une fonction que j’ai récemment utilisée sur un site internet. Code PHP : <?php Ce code va remplacer la version BBCode créée par l'utilisateur par la version HTML l'hors de l'affichage. Je vais pas entrer en détail pour chaque l'igne parce que le regex est tellement compliqué a comprendre pour les non initier qu'il mériterait un tuto a lui tout seul. Code PHP : $string = preg_replace('/\[b\](.+?)\[\/b\]/', '<b>$1</b>', $string); // [ b ][ /b ] Dand la phrase suivante, $sting va recevoir les données converties. preg_replace est la fonction utiliser pour appliquer ce que l'ont appelle le regex. Je vous invite a vous documenter sur le sujet ici. la chaine de caractère entre les guillemets peut sembler bizarre à première vue, mais il est en faite très simple. Je vous ferais un tuto sur le regex un de ses quatre. Le plus important a noté dans la chaine et la partie suivante (.+?) qui replacent la chaine de caractère qu'elle couvre par une variable réutilisable dans la string de remplacement par $1. s’il y'en avait plus d'un les variables serais $2 $3 $4 ext. La chaine suivante est la chaine de remplacement. Noter qu'ici on utilise $1 qui est égal au texte entre [ b ] et [ /b ]. On termine ensuite par la variable qui contient le texte en question. Pour utiliser la fonction BBCode, il suffit d'appeler la fonction a l'affichage du texte Ex: Code PHP : <?php Veillez cité la source et l'auteur si vous désirer reprendre mon tuto. Soyez intelligent et restez WhiteHat! Par CyberSee |