PB bbcode !

WRInaute accro
Bonjour,

J'ai un pb avec le bbcode en php.
Je m'explique...:

Avec le formulaire si l'utilisateur (tout comme sur le forum ici présent) clique sur gras (=B) les balises suivantes s'insère: . Pour cette partie pas de problème (javascript ok). Cependant lorsque coté serveur je récupère le POST du formulaire et du texarea en question je le fais de cette manière:
$ variable =
Code:
(trim(htmlspecialchars(nl2br(addslashes($_POST['msg_mentionslegales'])))))

Le problème qui se pose c'est htmlspecialchars car cette fonction, comme vous le savez à pour effet de convertir les caractères spéciaux en entités HTML. Ce qui fais que lorsqu'un utilisateur insère une URL de ce type: (je rajoute volontairement les _ à ne pas prendre en compte)
[_url="www.site.fr"]mon lien[_/url]

Et bien la fonction htmlspecialchars me convertie les " par ", ce qui fait que lorsque je veux remplacer mon bbcode en html cela ne fonctionne pas car il ne trouve pas les ".
Code:
$text = preg_replace('!\[url="(.+?)"\](.+?)\[\/url\]!', '<a href="$1">$2</a>', $text);

Je fais appelle à vous car après plusieurs recherche et test je reste sur mes pennes...

Merci Ô grand seigneur qui voudra bien m'aider...!
Thierry
 
WRInaute occasionnel
Salut,
essaie avec ce code, je ne crois pas qu'il pose de problèmes de sécurité :
Code:
(trim(str_replace( array( "<", ">" ), array( "&lt;", "&gt;" ), nl2br(addslashes($_POST['msg_mentionslegales'])))))

:wink:
 
WRInaute accro
j'ai essayer cela:

Code:
$msg_mentionslegales = ((isset($_POST['msg_mentionslegales'])) ? (nl2br(trim(htmlspecialchars(addslashes($_POST['msg_mentionslegales']))))) : (''));
$msg_mentionslegales = str_replace('&quot;', '"', $msg_mentionslegales);
$msg_mentionslegales = bbcode_html($msg_mentionslegales);

je récupère mon post, puis je fais la fonction htmlspecialchars ce qui me transforme mes " en &quot; ! ensuite je voudrais remplacer mes &quot; par " ,pour parser ca en html, puis ensuite une fois fais reparser le tout de " vers &quot;...

voyez vous ?

mais il ne me trouve pas le &quot; il en revanche j'ai essayé le quot; ca foncitonne il trouve, mais pas bon comme il reste le & !
 
WRInaute accro
ca marche mais quand je fais ca ca ne trouve pas les "

$text = preg_replace('!\[url="(.+?)"\](.+?)\[\/url\]!', '<a href="$1">$2</a>', $text);

un truc de fou !
 
Discussions similaires
Haut