Il existe un paramètre charset dans htmlspecialchars mais la version de décodage ne l'a pas. En comparaison avec les similarités html, les fonctions de codage et de décodage ont toutes les deux le paramètre charset. Je ne peux donc pas choisir le charset que je décrypte?Pourquoi htmlspecialchars_decode dans PHP n'a pas le paramètre charset comme dans son homologue?
Répondre
htmlspecialchars()
requiert le paramètre charset uniquement lors de la conversion de jeux de caractères dont les caractères spéciaux ne sont pas dans les positions par défaut. Par conséquent, les jeux de caractères ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252 et KOI8-R ne requièrent pas le paramètre charset.
htmlspecialchars_decode()
convertit les entités (& " ' < >
) en leur équivalent de caractère et n'a donc pas besoin de passer un jeu de caractères.
Lorsque htmlentities()
convertit les caractères 'all' en leur entité équivalente, un jeu de caractères peut être passé en html_entity_decode()
pour s'assurer que les entités sont décodées en caractères pertinents dans le jeu de caractères.
Tout simplement parce qu'il ne convertit que & " ' < >
et rien d'autre.
Si vous voulez décoder toutes les entités, utilisez html_entity_decode(), vous pouvez lui passer le paramètre charset comme troisième paramètre.