Htmlentities ou htmlspecialchars

Résolu
kurt -  
 flyn -
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   Statut Contributeur Dernière intervention   922
 
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   Statut Contributeur Dernière intervention   922
 
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
kurt
 
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   Statut Contributeur Dernière intervention   922
 
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
kurt
 
et si je fais un htmlentites(htmlspecialchars( )); ?? comme ca il n'y aura pas de soucis de securité ??
0
denis
 
ok merci a toi j'ai compris =)
0
denis
 
denis = kurt
0
karikikou Messages postés 84 Date d'inscription   Statut Membre Dernière intervention   1
 
PAr contre comment on le place dans le formulaire et avec quelle données?
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
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
flyn
 
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