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 :

htmlentities() utilisation sur du texte


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut htmlentities() utilisation sur du texte
    Salut,

    Voilà j'ai un petit problème sur mes pages PHP. En effet, tous les accents s'affichent avec un <?>.

    J'ai néanmoins trouvé une solution pour l'affichage de mes variables texte accentuées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo htmlentities($ma_variable);
    Le problème c'est pour l'affichage de texte sur la page. Je ne peux pas mettre directement du texte brute accentué dans cette fonction et je ne vais pas créer une nouvelle variable pour chaque mot...

    Comment dois-je procéder ?

    MERCI !!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Vérifie que l'encodage de ton fichier PHP est le meme que celui que tu declares dans ton document HTML.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
    L'encodage du fichier html c'est dans la balise meta, mais l'encodage du fichier PHP c'est où exactement ?

    Merci !

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
    L'encodage du fichier html c'est dans la balise meta, mais l'encodage du fichier PHP c'est où exactement ?
    Ok, mais dans ton autre topic d'où est très certainement lié ta question, je t'avais mis un lien vers la Doc Php des ces 2 fonctions htmlspecialchars() et htmlentities(), et il est précisé ceci :
    http://fr2.php.net/manual/fr/function.htmlentities.php
    Comme htmlspecialchars(), cette fonction prend un troisième argument optionnel charset qui définit le jeu de caractères utilisé durant la conversion. Actuellement, le jeu de caractères ISO-8859-1 est utilisé par défaut.
    Donc vu que ton encodage n'est pas de l'ISO-8859-1 il faut rajouter/préciser ton encodage UTF-8 pour le 3ème argument.

    Aussi, pose toi bien la question (ou fais des essais) pour voir si c'est la fonction htmlentities ou htmlspecialchar qu'il te faut. Elles se ressemblent mais c'est pas tout à fait la même chose quand même.


    Faut lire la doc car ce genre de petit truc ne se devine pas



    Petite parenthèse ou conseil en passant ... évite de faire (coder) du HTML avec des attributs en utilisant comme séparateurs des simple quotes, préfère les doubles quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    D'une part c'est la syntaxe de base (ou préconisée) et d'autre part tu te mets des bâtons dans les roues en ne la respectant pas.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut
    Salut,

    En fait les simples cotes sont là car j'ai fait une fonction entete() en php, et la balise <meta> est à l'intérieur d'un echo.

    Je vais regarder ce que tu as dit sinon.

    merci!

  6. #6
    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
    En fait les simples cotes sont là car j'ai fait une fonction entete() en php, et la balise <meta> est à l'intérieur d'un echo.
    C'est justement à mon sens un faux problème, et quelque part tu tombe dans le piège, pour le dire simplement.

    Et pour continuer et toujours simplement, personnellement j'applique quelques règles simples qui me semblent totalement efficace.
    Le HTML et pour les attributs : des doubles quotes systématiquement.
    Pour Php (echo, chaine de caractères etc ...) des simples quotes systématiquement.

    S'il y a des cas particuliers, et bien je le règle au cas par cas, mais sans déroger aux règles, mais en échappant ou utiliser la bonne fonction par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
    echo 'Un cas particulier : Et l\'affaire est réglée en échappant';

    Juste pour te donner une idée.
    Imagine un instant que tu sois amené à créer ton propre parseur de code HTML (un code Php qui lirait une page HTML).
    Et bien si tu varie au niveau des attributs des simple et doubles quotes, ça va être la croix et la bannière crois moi.
    Rien que ça démontre qu'il est préférable d'appliquer des règles ou des conventions d'écriture, et les bonnes, si possible.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut
    ok je prendrais en compte t'a remarque la prochaine fois

    merci en tout cas!!!

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

Discussions similaires

  1. Utiliser characters sur un texte long
    Par pirot dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/01/2015, 06h16
  2. [AS400] utilisation sur PC
    Par stanko dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 08/11/2010, 20h53
  3. ALT sur du texte
    Par oli2a dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/11/2004, 14h13
  4. Agir sur le texte entré dans un éditeur
    Par FatalError dans le forum C++
    Réponses: 1
    Dernier message: 24/10/2004, 14h54
  5. tri sur champ texte
    Par ridan dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/08/2004, 16h28

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