IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonctionnement htmlentities() et utf-8 [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Points : 21
    Points
    21
    Par défaut Fonctionnement htmlentities() et utf-8
    Bonjour,

    Malgrès de multiples recherches sur le forum, et sur google je n'arrive pas à comprendre le fonctionnement de cette fonction, je m'explique :

    Je fais un site en html5, donc la déclaration de l'encodage utilisé se fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta charset="utf-8" />
    Plus bas j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $str = 'Une soirée' ;
    var_dump(htmlentities($str,ENT_QUOTES,'UTF-8'));
    Ceci m'affiche : string(0) ""

    Par contre si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $str = 'Une soirée' ;
    var_dump(htmlentities(htmlentities($str)));
    Ceci m'affiche : string(21) "Une soir&eacute;e"

    Pourquoi mon premier code ne fonctionne pas ?

    Je dois mal comprendre ou omettre quelque chose, en vous remerçiant.

  2. #2
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 887
    Points : 1 531
    Points
    1 531
    Par défaut
    Citation Envoyé par psylo66 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $str = 'Une soirée' ;
    var_dump(htmlentities($str,ENT_QUOTES,'UTF-8'));
    Ceci m'affiche : string(0) ""
    Le troisième paramètre de htmlentities est le jeu de caractère de la conversion (et non pas le le jeu de caractère de la page). Donc, puisque $str contient un accent français, je pense qu'il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $str = 'Une soirée' ;
    var_dump(htmlentities($str,ENT_QUOTES,'ISO8859-1'));
    Ce qui est fait automatiquement lorsqu'on fait htmlentities($str) puisque c'est le jeu de caractère par défaut (voir ici)

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Plus simple lorsque tu travailles en utf-8 : utilises plutôt htmlspecialchars à la place de htmlentities. Avec htmlspecialchars tu n'auras pas besoin de spécifier le paramètre d'encodage (ISO et utf-8 sont similaires pour cette fonction).

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Ca devraient fonctionner, en tout cas, juste comme ça j'ai essayé (sait on jamais), et ça retourne 17, car au bout le é est une entité HTML.
    Ceci dit, ton 2ème essai est un peu bizarre.
    Il n'y a pas à appliquer 2 fois la même fonction : htmlentities(htmlentities())


    Tu as peut être une erreur car ton fichier qui contient ces codes n'est peut être pas en UTF-8.
    Enfin, c'est ce que je me dis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Htmlentities et UTF
    Par Garamante dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/02/2014, 16h45
  2. Encodage UTF-8 ne fonctionne pas
    Par yodark dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2011, 17h43
  3. site en UTF-8 : htmlentities
    Par sebhm dans le forum Langage
    Réponses: 6
    Dernier message: 02/04/2010, 11h24
  4. Manoeuvre avec htmlentities qui ne fonctionne pas
    Par roy-mustang dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2009, 22h15
  5. Réponses: 34
    Dernier message: 24/05/2006, 02h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo