Se connecter / S'enregistrer
Votre question

[PHP ]Balise HTML, htmlspecialchars et guillemets

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
8 Juillet 2006 06:32:23

Bonjour à tous,

j'ai un petit problème avec un script qui me permet de créer une sorte de blog sur mon site.

L'utilisateur peut poster un titre, un texte et envoyer une photo.

Je viens de m'appercevoir que si l'utilisateur met de guillemets (") dans son texte, le script plante.

J'ai évidemment pensé à mettre un htmlspecialchars voir même un htmlentities et çà marche évidemment beaucoup mieux.

Mais mon soucis c'est que maintenant, comme dans ce texte il y a du BB-code (perso), la transformation en balise HTML (police, couleur, etc...) pour un aperçu ne focntionne plus car les balises sont aussi transformé en même temps avec le 'htmlspecialchars'.

par exemple le [br] est normalement transformé en
mais maintenant il est transformé en "&'q'u'o't';'&'l't';'b'r' '/'&'gt';'" (sans les ') donc la balise s'affiche dans l'aperçu et ne donne pas son résultat.

Je ne sais pas comment procéder pour résoudre ce problème.

Si quelqu'un pourrait me guider, ca serait super sympa.

Merci d'avance.

Autres pages sur : php balise html htmlspecialchars guillemets

a c 145 L Programmation
8 Juillet 2006 10:07:22

A mon avis, c'est l'ordre de transformation de ta chaine qui ne va pas...
fais d'abord un htmlentities() et ensuite converti ton bbcode.
8 Juillet 2006 10:26:51

Ben je pense mais je n'ai pas trouvé comment le mettre dans le bon ordre. Voici le code :

  1. $body = htmlentities(stripslashes(str_replace($remp_o, $remp_n, $original))); // FINAL POUR APERCU
a c 232 L Programmation
8 Juillet 2006 12:52:24

Salut,

A quoi ça correspond ça : str_replace($remp_o, $remp_n, $original) ??

En fait, il faut que tu fasses un htmlentitie en premier, là tu le fais en dernier...
Car ta ligne c'est équivalent à :
  1. $body = str_replace($remp_o, $remp_n, $original);
  2. $body = stripslashes($body);
  3. $body = htmlentities($body);


Faut faire ton htmlentities avant ta transformation en BBCode
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS