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 :

Caractère spéciale HTML et tag


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Caractère spéciale HTML et tag
    Bonjour,

    En voulant afficher depuis un script PHP (echo) un texte en français (donc avec les accents) j'obtiens des losanges à la places des caractères spéciaux...

    Cependant dans le fichier source .php (mais hors des balises <?php ?>) j'ai mis des accents qui passe sans problème... Est-ce que la commande echo formate son argument ?? C'est louche ça...

    Je sais qu'il y a la fonction htmlentities() qui permet bien à la commande echo de fonctionner sans problème avec les accents mais du coup les balises ne sont plus conservés !
    Savez-vous comment contourner ce problème facilement (sans scripts avec str_replace) ?

    Voici un exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <b>école</b>
    <?php
    echo "<b>école</b>";
    echo htmlentities("<b>école</b>");
    ?>
    Et voici la sortie correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    école
    ◙cole
    <b>école</b>

  2. #2
    Membre régulier Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Points : 91
    Points
    91
    Par défaut
    Je n'ai pas souvenir d'avoir eu des problèmes à echo des accents, bizarre, y'a surement un autre truc à faire "plus global" que htmlentities

    En attendant de trouver mieux, il te suffit de faire de la concaténation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo '<b>'.htmlentities('école').'</b>';
    ?>
    Enfin je suggère de jeter un oeil du coté de l'encodage de ta page html, je suppose que ça devrait résoudre le souci sans avoir recours aux htmlentities, tout du moins pour des accents

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Merci pour la réponse...
    Oui la concaténation reste une solution mais ça n'explique pas le problème..
    Bien sur l'encodage a été ma première vérification mais justement sur la même page les accents écrit en dur dans le .php passe sans problème, pas avec la commande echo...
    Sinon le codage de la page est en unicode (utf-8)..
    Merci.

  4. #4
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    et ta balise meta :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    Développeur informatique contrarié...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Merci pour la réponse mais la même est déjà présente...
    J'ai aussi vérifié au niveau du navigateur...

  6. #6
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    si tu affiche les accents tu ne peux le faire en utf-8 sauf en les encodants en utf-8
    faut spécifier au navigateur le bon encodage
    d'ailleurs pour vérifier ce type de problème est de changer l'encodage de traitement via le menu affichage de ton navigateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

  7. #7
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    echo "<b>école</b>";
    echo htmlentities("<b>école</b>");
    ?>
    Si tu utilise comme encodage UTF-8, alors il faut le préciser dans la fonction htmlentities (idem pour htmlspecialchars).
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo htmlentities('école', ENT_COMPAT, 'UTF-8');
    Quand tu rencontre un comportement anormal comme ici, réfère toi à la doc de Php sur http://fr2.php.net/

    Pour cette fonction, il est précisé ceci :
    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
    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]

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    Désolé du délai et désolé de passer à travers la doc...
    Mais je n'avais pas imaginé que cela aurait pu venir de ces fonctions.
    En tout cas merci !!
    Je met en résolu..

    LOL on fait comment ?
    Rien dans la faq ni dans le forum...

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

Discussions similaires

  1. Caractère spécial et HTML 5
    Par mino26tz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 29/09/2010, 11h02
  2. Réponses: 2
    Dernier message: 06/11/2005, 11h11
  3. [chaînes de caractères] Conversion HTML ?
    Par rozwel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/11/2004, 15h21
  4. Pb masquer caractère spécial
    Par cosminutza dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/11/2004, 11h27

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