Htmlentities ou htmlspecialchars

Résolu/Fermé
kurt - 26 janv. 2008 à 13:50
 flyn - 30 avril 2013 à 00:08
Bonjour,

Comme je 'lindique ds le titre , quellle(s) est(st) les differences entre les foncitons php "htmlentities" et "htmlspecialchars" ??
Y en a-t-il une a privilegier par rapport a l'autre?

merci

8 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
26 janv. 2008 à 14:01
salut,

difficile de dire mieux que le manuel PHP.

pour htmlspecialchars :
Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour être affichés. htmlspecialchars() remplace tous ces caractères par leur équivalent dans la chaîne string . Cette conversion est très pratique pour la programmation web. Si vous devez remplacer tous les caractères, utilisez plutôt htmlentities() à la place.

pour htmlentities:
htmlentities est identique à la fonction htmlspecialchars(), sauf que tous les caractères qui ont des équivalents en entités HTML sont effectivement traduits.

donc, 'htmlspecialchars()' convertit les caractères :
• "&" (et commercial) devient "&"
• """ (guillemets doubles) devient """ lorsque ENT_NOQUOTES n'est pas utilisée.
• "'" (single quote) devient "'" uniquement lorsque ENT_QUOTES est utilisée.
• "<" (inférieur à) devient "&lt;"
• ">" (supérieur à) devient "&gt;"

alors que 'htmlentities()' convertit tous les caractères comme 'à', 'é', 'è', etc…

htmlspecialchars
htmlentities
20
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
26 janv. 2008 à 16:38
htmlentities est identique à la fonction htmlspecialchars(), sauf que tous les caractères qui ont des équivalents en entités HTML sont effectivement traduits.

ça ne servirait à rien hormis faire deux opérations au lieu d'une.
'htmlentities()' fait déjà le boulot de 'htmlspecialchars()' !!!

et pour la sécurité, tout dépend de ce que tu fais avec les valeurs, envoi d'un mail, stockage dans une BDD, affichage à l'écran…
2
merci pour ta reponse, dc en fait tout depend de si j'accepte dans mon champ de texte les caracteres speciaux qui ont des equivalents html ou pas ?
1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
26 janv. 2008 à 14:53
tout dépend en gros de si tu veux transformer les caractères accentués ou pas.

de toute façon tu protèges les caractères qui ont une signification particulière en HTML : esperluettes, quotes, ouvertures et fermetures de balises.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
et si je fais un htmlentites(htmlspecialchars( )); ?? comme ca il n'y aura pas de soucis de securité ??
0
ok merci a toi j'ai compris =)
0
denis = kurt
0
karikikou Messages postés 84 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 6 juillet 2011 1
1 oct. 2009 à 10:31
PAr contre comment on le place dans le formulaire et avec quelle données?
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
14 nov. 2009 à 03:23
salut,

et "bonjour" ou une quelconque formule de politesse, c'est en option ?

et si tu as une question plus précise, ouvre une nouvelle discussion !
0
Salut mais vous pourrez avoir de petites surprises quand à l'affichage de ces caractères si jamais vous décidez de le faire! des choses vraiment bizarre comme par exemple afficher "être" vous allez pas aimez croyez moi.Et ça même si vous faite mysql_query("SET NAME UTF8") donc faite un choix c'est plus simple et si c'est juste pour la sécurité htmlspecialchars fera l'affaire les deux ensemble engendre des bobos un peut désagréable
0