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 :

[PHP-JS] Affichage des HTML Entities (PHP) prblm bizar


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [PHP-JS] Affichage des HTML Entities (PHP) prblm bizar
    Soit le code PHP suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $str="éééàààà'''''\"\"'";
    var_dump($str);
    echo $str;
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    $str=html_entity_decode($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    Ce qui à l'affichage me donne:
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    string 'éééàààà'''''""'' (length=15)
    éééàààà'''''""'
    string 'éééàààà'''''""'' (length=104)
    éééàààà'''''""'
    source html (éééàààà'''''""')
    string 'éééàààà'''''""'' (length=15)
    éééàààà'''''""'
    source html (éééàààà'''''""')
    string 'éééàààà'''''""'' (length=104)
    éééàààà'''''""'
    source html (éééàààà'''''""')
    string 'éééàààà'''''""'' (length=164)
    éééàààà'''''""'
    source html (éééàààà'''''""' )

    Premier constat, mes echo appliquent 1 niveau de EntitieDecode...
    (c'est la même avec print)
    je me suis dit: "pas de problème je vais appliquer un niveau de htmlentities de plus"
    sauf que avec 2 niveaux de htmlentities ça ne fonctionne plus du tout...
    mes echo se mettent à afficher fidèlement ce qu'il y a réellement dans la variable....

    Je ne sais pas de quel paramètre foireux dans le php.ini ou autre source d'emmerdement je suis victime, mais j'aimerai que mes echo affichent bien ce qu'il y a dans ma variable en toute circonstances
    ou
    au moins que si interprêtation il y a, elle soit constante en toute circonstances....

    Merci de m'aider...

    PS: je remarque que var_dump arrive très bien à m'afficher le contenu fidèle de la variable.
    existe-il une instruction qui soit aussi fidèle tout en affichant que la valeur?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Bon je vais essayer mais avec ton exemple, on comprend pas grand chose entre les quotes qui se multiplient etc, c'est dur de voir ou on en est.

    Ceci dit, j'ai essayé ton code et ca marche chez moi, quand je fais un htmlentities, j'ai bien la source html correcte derrière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $str="éééàààà'''''\"\"'";
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    Au moment du echo, j'ai bien des entités html dans le source de la page.

    Je suis peut etre à coté de la plaque parce que je suis perdu dans ton exemple, si tu pouvais simplifer ton exemple, ca m'arrangerait.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Ah oui, essaie d'afficher la source sous IE parce que FireFox se permet parfois d'interpreter les entités dans le source de la page.

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai poussé encore ma réflexion et mes tests, ce qui m'a encore réservé des surprises...

    Comme il n'est pas logique qu'une fonction se comporte différement sans raison valable, j'ai chercher en quoi le comportement pourrai être constant.
    Je me suis dit que le décodage des html entities automatique ne décodait peut être pas les & (&amp.

    Soit le code PHP suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $str="&éééàààà'''''\"\"'";
    var_dump($str);
    echo $str;
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    $str=html_entity_decode($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    Ce qui à l'affichage me donne:
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    string '&éééàààà'''''""'' (length=15)
    &éééàààà'''''""'
    string '&éééàààà'''''""'' (length=104)
    &éééàààà'''''""'
    source html (&éééàààà'''''""' )
    string '&éééàààà'''''""'' (length=15)
    &éééàààà'''''""'
    source html (&éééàààà'''''""')
    string '&éééàààà'''''""'' (length=104)
    &éééàààà'''''""'
    source html (&éééàààà'''''""')
    string '&éééàààà'''''""'' (length=164)
    éééàààà'''''""'
    source html (&éééàààà'''''""' )
    Vous en déduisez quoi?

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Ben honnetement, je ne vois rien d'anormal.


    Si je reprends ton exemple pas a pas:
    Etape 1 :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str="&éééàààà'''''\"\"'";
    var_dump($str);
    echo $str;
    affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string 'éééàààà'''''""'' (length=15)
    éééàààà'''''""'
    La c normal, je pense que y' a pas besoin d'expliquer.


    Etape 2:
    Ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    Tu appliques htmlentities, qui va convertir dans stp, toutes les entités HTML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string '&éééàààà'''''""'' (length=104)
    &éééàààà'''''""'
    source html (&éééàààà'''''""' )
    Donc la c'est normal, htmlentities converti tout en entité html. Quand tu fais echo, le navigateur les interprete et t'affiches donc la chaine comme si elle n'avait pas changé depuis le début, et dans la source, tu vois bien que la chaine a bien été convertie en entité html.

    Etape 3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str=html_entity_decode($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    ce qui te donne le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string '&éééàààà'''''""'' (length=15)
    &éééàààà'''''""'
    source html (&éééàààà'''''""')

    Entity-decode a décode les entités, et on a un affichage non transformé donc, toujours normal jusque la.

    Etape 4 :

    Ensuite étape suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    donne le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string '&éééàààà'''''""'' (length=104)
    &éééàààà'''''""'
    source html (&éééàààà'''''""')
    et ca c'est sous FF surement car sur IE j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string(109) "&éééàààà'''''""'"
    &éééàààà'''''""'
    Etape 5 :

    Ensuite pour finir tu fais un htmlentities, sur un htmlentites, ce qui évidemment va allonger la chaine puisque htmlentites genere des entités. et donc on doit transormer les & supplémentaires.

    C'est ce que tu as mis en résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string '&éééàààà'''''""'' (length=164)
    éééàààà'''''""'
    source html (&éééàààà'''''""' )
    Si tu pouvais donc me dire quelle étape te pose problème la dedans et pourquoi, je pourrai te répondre.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Raideman
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str;
    donne le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string '&éééàààà'''''""'' (length=104)
    &éééàààà'''''""'
    source html (&éééàààà'''''""')
    Ce cas n'est pas tolérable quelque soit le navigateur...
    sachant que contrairement à ce que tu me rapporte en étape 2 je n'ai pas les entities dans le code HTML à ce moment...
    sauf si le premier caractère est un &...
    regarde bien mon tout premier post tu verra le problème...
    je ne veux pas insérer de & devant tout ce que j'affiche sur mon site...

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Raideman
    Ah oui, essaie d'afficher la source sous IE parce que FireFox se permet parfois d'interpreter les entités dans le source de la page.
    Comment gérer ce problème dans mon code PHP?
    je ne peux pas imposer aux internautes un navigateur particulier...
    hors mes pages se trouvent perturbées parceque avec les caractères " et ' certaines chaines de caractère (dans su javascript) se retrouvent mal délimitées...

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    A l'étape 2 j'ai ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $str=htmlentities($str,ENT_QUOTES);
    var_dump($str);
    echo $str . "<br/>";
    ?>
    Sortie Firefox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string '&amp;&eacute;&eacute;&eacute;&agrave;&agrave;&agrave;&agrave;'''''&quot;&quot;'' (length=109)
    &éééàààà'''''""'
    Sortie IE7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string '&amp;&eacute;&eacute;&eacute;&agrave;&agrave;&agrave;&agrave;'''''&quot;&quot;'' (length=109)
    &éééàààà'''''""'
    Source HTML (dans les deux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    '&amp;amp;&amp;eacute;&amp;eacute;&amp;eacute;&amp;agrave;&amp;agrave;&amp;agrave;&amp;agrave;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&amp;quot;&amp;#039;' (length=109)
    &amp;&eacute;&eacute;&eacute;&agrave;&agrave;&agrave;&agrave;'''''&quot;&quot;'<br/>
    Je vois pas ce qui te surprend?

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    justement je n'aboutie pas au même code HTML...
    je veux donc trouver le problème....

    regarde bien les résultat que j'obtien, ce ne sont pas les mêmes que ceux que tu cite...

    et si tu te base sur les résultats que tu as chez toi,
    ça ne sert à rien vu que le problème se situe chez moi...

  10. #10
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai bel et bien le problème aussi bien sous FireFox que IE...
    je viens de réussir à contourner cet ecueil en allant chercher la valeur dans un InnerHTML...
    je n'ai dont plus pour cette fois à afficher ma chaine de caractère délimité par " ou '

    mais que ferai-je le jour où j'aurai affaire à une donnée que je ne veux pas afficher?

    quand j'applique htmlentities sur une chaine j'exige que les entities soit présentes à l'affichage (au niveau du code source de la page HTML)

    Donc ce qui m'aiderai ce serait qu'on me cite tout ce qui peut perturber les entities dans la constructions de la page par le serveur web....

Discussions similaires

  1. [PHP & XML] Affichage des accents
    Par Mescaline dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 20/01/2008, 19h11
  2. [PHP-JS] affichage des photos avec php
    Par madiabd dans le forum Langage
    Réponses: 6
    Dernier message: 09/10/2007, 11h54
  3. [MySQL] Affichage des images avec PHP
    Par dasou dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 06/02/2007, 19h44
  4. Réponses: 4
    Dernier message: 05/12/2006, 20h13

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