Htmlentities ou htmlspecialchars

Résolu
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

  1. Contributeur
    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
    1. 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
      1. Contributeur
        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
        1. et si je fais un htmlentites(htmlspecialchars( )); ?? comme ca il n'y aura pas de soucis de securité ??
          0
          1. Contributeur
            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
            1. ok merci a toi j'ai compris =)
              0
              1. PAr contre comment on le place dans le formulaire et avec quelle données?
                0
                1. Contributeur
                  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
                2. 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