24-12-2008, 12:27 AM
Je soulignais les arguments additionnels de htmlentities() dans mon exemple.
Le quatrième argument est également adapté aux personnes qui appliquent cette fonction avant l'insertion en base de données. En effet, en donnant true en quatrième argument, les caractères déjà encodés ne le seront pas à nouveau, un > ne deviendra pas >. C'est important quand l'on souhaite permettre l'édition d'un message qui a été encodé.
Enfin, htmlspecialchar() est touché par le même problème d'encodage : il renvoie par défaut une chaîne encodée en ISO-8859-15 (mais permet lui aussi de spécifier l'encodage comme troisième argument). C'est transparent dans la plupart des cas mais attention.
Toujours est-il que si l'on travaille avec UTF-8, encoder les caractères n'a pas vraiment d'intérêt, htmlentities() suffit à encoder les caractères &, ', ", < et > (notamment quand on travaille sur des documents XML (récemment, un membre du forum avait un petit soucis avec une feuille XSL et un caractère > : même dans une expression il faut utilise > !)).
Pour moi, la meilleure solution est donc de travailler avec UTF-8 et strip_tags(), que l'on utilisera à l'affichage ou à l'insertion selon les préférences.
Sephi-Chan
Le quatrième argument est également adapté aux personnes qui appliquent cette fonction avant l'insertion en base de données. En effet, en donnant true en quatrième argument, les caractères déjà encodés ne le seront pas à nouveau, un > ne deviendra pas &gt;. C'est important quand l'on souhaite permettre l'édition d'un message qui a été encodé.
Enfin, htmlspecialchar() est touché par le même problème d'encodage : il renvoie par défaut une chaîne encodée en ISO-8859-15 (mais permet lui aussi de spécifier l'encodage comme troisième argument). C'est transparent dans la plupart des cas mais attention.
Toujours est-il que si l'on travaille avec UTF-8, encoder les caractères n'a pas vraiment d'intérêt, htmlentities() suffit à encoder les caractères &, ', ", < et > (notamment quand on travaille sur des documents XML (récemment, un membre du forum avait un petit soucis avec une feuille XSL et un caractère > : même dans une expression il faut utilise > !)).
Pour moi, la meilleure solution est donc de travailler avec UTF-8 et strip_tags(), que l'on utilisera à l'affichage ou à l'insertion selon les préférences.
Sephi-Chan