Trier les balises reçu via un textarea

Résolu/Fermé
schancel Messages postés 296 Date d'inscription dimanche 20 mars 2011 Statut Membre Dernière intervention 7 décembre 2018 - Modifié par schancel le 20/12/2011 à 20:33
 Utilisateur anonyme - 26 déc. 2011 à 16:24
Bonjour,

je reconnait une fonction php qui elimine les balises html recu d'un formulaire Htmlentities
mais j'aimerai savoir si on peut selectioner quelque une ou plus meme créer comme sur commentcamarche.net exple la balise code /code

2 réponses

salut,
bon, plusieurs methodes envisageables, ce que je vais te donner n'est pas forcement la meilleure mais bon:
si tu maitrises les expressions régulières ou la fonction str_replace tu peux donc transformer tes balises utiles en balises bbcode (< code> < /code> devient [code] [/ code]) qui ne sont pas modifies par la fonction htmlentities, puis tu appliques cette fonction rend les autres balise inactives. Pour finir tu transforme les balises bbcode e html lors de l'affichage avec les expressions régulières ou str_replace.
@+
0
schancel Messages postés 296 Date d'inscription dimanche 20 mars 2011 Statut Membre Dernière intervention 7 décembre 2018 49
25 déc. 2011 à 22:20
stp argumente un peu avec un mini code htm php stpp et aussi le bbcode je ne m'y connait pas trop
0
Utilisateur anonyme
26 déc. 2011 à 16:24
faut juste faire un peu de recherche, et tu auras la définition du bbcode, en bref il replace le code html ceci pour éviter des failles de sécurité, par exemple la faille xss.
il y a plein de tutos sur le principe et l'utilisation du bbcode. Le but étant de creer un code dont les balises ne seront pas converties par la fonction htmlentities, donc on utilise les "[]" et non "<>"
//variable contenant le message posté $var
//on transforme les balises importantes en bbcode
$var=preg_replace('#<code>(.+)</ code>#i', '[code]$1[ /code]',$var);
//on rend inoffensif les autres balises 
$var=htmlentities($var);
//on peut stocker le code dans un base de donné
//pour afficher le code on remplace la balise en bbcode en code html 
$var= preg_replace('#\[code\](.+)\[ /code\]#i', '<pre>$1</pre>', $var);
/*ici comme sur ccm la balise en bbcode [code][ /code] correspond à la balise html <pre></pre>*/


voilà , j'ai mis des espace dans les balises pour pas que mon code soit pris comme le bbcode et convertit par le script de ccm.
0