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 :

CreateElement et échappement


Sujet :

Langage PHP

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut CreateElement et échappement
    Bonjour à tous,

    J'ai un petit souçis avec CreateElement de DOMElement, en effet dans la doc on peut lire la chose suivante :
    Note: La valeur value ne sera pas échappée. Utilisez la méthode DOMDocument::createTextNode pour créer un nœud de texte avec le support de l'échappement.
    Donc à priori quelque chose de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $dom = new DOMDocument('1.0', 'utf-8');
    $element = $dom->createElement('test', '<!-- TEST CONTENU -->');
    $dom->appendChild($element);
    echo $dom->saveXML();
    Devrait me retourner <!-- TEST CONTENU --> mais il me retourne le contenu échappé c'est à dire &lt;-- TEST CONTENU --&gt;

    J'ai contourner le problème en passant par un CDATA (ce qui est très certainement plus approprié d'ailleurs) mais je voulais savoir si c'était un comportement propre à ma version de php (5.3.1) ou alors une doc pas à jour ?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    C'est normal, le contenu que tu lui passes contient des caractères réservés au langage. Ceux-ci sont donc remplacés par des entités (&lt;, &gt;). Si tu tiens à insérer un commentaire dans ton document il y a un nœud spécialement prévu à cet effet, de type #COMMENT, et que tu peux créer ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dom->createComment('TEST CONTENU');
    Manuel PHP : http://php.net/manual/en/domdocument.createcomment.php

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Je tiens pas spécialement à insérer de commentaire mais c'était pour l'exemple.

    Que faut il comprendre par "La valeur value ne sera pas échappée" dans ce cas ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Je ne sais pas, ça sort d'où au fait ?

    Sinon as-tu essayé d'obtenir la valeur de ton nœud texte et de l'afficher avec print par exemple ? Je pense que c'est DOMDocument::saveXML qui fait la transformation en entités, et que tant que tu manipules le DOM l'information reste inchangée (texte non échappé).

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Citation Envoyé par Oscar Hiboux Voir le message
    Je ne sais pas, ça sort d'où au fait ?

    Sinon as-tu essayé d'obtenir la valeur de ton nœud texte et de l'afficher avec print par exemple ? Je pense que c'est DOMDocument::saveXML qui fait la transformation en entités, et que tant que tu manipules le DOM l'information reste inchangée (texte non échappé).
    Ca vient de la doc de createElement

    Et oui j'ai bien essayé de récupérer la valeur du noeud et les caractères sont bel e bien echappé par createElement.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Je ne sais pas trop ce qu'ils entendent par là mais dans tous les cas le comportement semble normal. Vois les qq commentaires à la suite de la doc ici - le dernier parle des nœuds CDATA, qui est la seule manière, autre que l'usage des entités, pour passer du texte sans échappement d'aucune sorte.

Discussions similaires

  1. Fonction d'échappement
    Par bletz dans le forum C++
    Réponses: 2
    Dernier message: 30/09/2005, 08h12
  2. caractéres d'échappements
    Par kleenex dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2005, 12h46
  3. createElement('script')
    Par CR_Gio dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/09/2005, 19h49
  4. onmouseXXX et createElement
    Par hogan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/07/2005, 18h12
  5. Fonction "CreateElement" avec style sous Firebird
    Par protos69 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/11/2004, 17h30

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