Htmlspecialchars / htmlentities double encode

Résolu
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 26 mars 2009 à 18:29
kapakasimoise Messages postés 3 Date d'inscription vendredi 18 novembre 2011 Statut Membre Dernière intervention 15 mars 2012 - 12 janv. 2012 à 00:51
Salut à tous,

Plutôt que de m'arracher les cheveux un peu plus je fais appel à vos lumières :

Pourquoi ça :
$str = '
machin
';
echo htmlspecialchars($str, ENT_QUOTES, 'UTF-8', false);

m'encode également les balises html ??
(même chose avec htmlentities)

Test effectué sur Vista 64 bits, PHP 5.2.8

Thanks à celui qui laissera la nature s'occuper de ma perte de cheveux (elle fait déjà bien les choses )

Kohntark -
A voir également:

3 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
26 mars 2009 à 19:25
C'est le fonctionnement normal de ces fonctions de remplacer les caractères pouvant être interprété en HTML par des codes pour les "échapper" :
< devient & lt ;
> devient & gt ;
etc
cf : http://www.php.net/manual/fr/function.htmlentities.php

Flachy Joe

« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks<
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
26 mars 2009 à 20:04
Salut Flachy Joe,

Grrrr, en voulant te répondre je viens de m'apercevoir de ma connerie :
"Lorsque <tt class= "parameter">double_encode</tt>
est désactivé, PHP n'encodera pas
les entités html existantes. Par défaut, tout est convertie."
=>
et non pas, comme je l'avais interprété :
Lorsque <tt class="parameter">double_encode</tt>
est désactivé, PHP n'encodera pas
les tags html existantes. Par défaut, tout est convertie. 

Ca m'avait semblé bizarre aussi de ne pas avoir prêté attention à ce quatrième argument plus tôt. Le but initial étant de trouver une façon très simple d'encoder tous les caractères elligibles sauf les balises, par exemple :

htmlspecialchars('chui fatigué', ENT_QUOTES, 'UTF-8', false);
=> qui donnerait la chaîne de caractères :
chui fatigu&eacute;

thanks de m'avoir fait remarqué ma connerie.

Kohntark -
3
kapakasimoise Messages postés 3 Date d'inscription vendredi 18 novembre 2011 Statut Membre Dernière intervention 15 mars 2012
12 janv. 2012 à 00:51
En tout courage
0
Rejoignez-nous