PB bbcode !

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: 11 Juil 2005

PB bbcode !

Message le Sam Sep 17, 2005 14:28

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: Tout sélectionner
(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: Tout sélectionner
$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


Twister
WRInaute impliqué
WRInaute impliqué
 
Messages: 619
Inscription: 16 Jan 2004

Message le Sam Sep 17, 2005 14:36

Salut,
essaie avec ce code, je ne crois pas qu'il pose de problèmes de sécurité :
Code: Tout sélectionner
(trim(str_replace( array( "<", ">" ), array( "&lt;", "&gt;" ), nl2br(addslashes($_POST['msg_mentionslegales'])))))


:wink:

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: 11 Juil 2005

Message le Sam Sep 17, 2005 17:54

j'ai essayer cela:

Code: Tout sélectionner
$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 & !


nalrem
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 401
Inscription: 6 Avr 2003

Message le Sam Sep 17, 2005 17:58

Bonjour,

Essaie peut être de mettre des " et pas de ' pour encadrer "&quot;"

nalrem

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: 11 Juil 2005

Message le Sam Sep 17, 2005 18:04

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 !


nalrem
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 401
Inscription: 6 Avr 2003

Message le Sam Sep 17, 2005 20:43

Il faut les échapper en utilisant un \


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité