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 :

Equivalent à htmlentities pour xml [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 41
    Par défaut Equivalent à htmlentities pour xml
    Bonjour.

    Je cherche un code php pour encoder un texte afin qu'il soit compatible avec du xml. Je m'explique.

    Je voudrais que les caractères spéciaux soient codés avec des équivalents xml (é = & #233; et non pas é ).

    Tout ceci afin de rendre un texte en xml pour l'exploiter ensuite dans un fichier Flash.

    Donc si quelqu'un a une solution, cela m'aiderait bien et m'éviterait de remplacer tous les caractères spéciaux manuellement...

    Merci d'avance !!

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    tu ne trouveras pas un tel code, et c'est d'ailleurs heureux car d'une part cela relève de la grosse bidouille, d'autre part l'étendue des conversions en références dépend de l'encodage choisi pour le fichier de sortie ; par exemple, pour un encodage en US-ASCII, tous les caractères dont la valeur Unicode est supérieure à 127 devront être convertis en références de caractères, ce qui n'est pas une mince affaire...

    Le plus fiable, le plus simple, bref le plus « propre » consiste à générer directement du XML avec XMLWriter, et lui laisser le sale boulot consistant à transformer en entités ou références de caractères ce qui doit l'être.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 41
    Par défaut
    Merci pour votre réponse.

    En fait, j'avais besoin de passer par le PHP car je ne comptais pas écrire le texte directement, mais passer par une base de données.

    C'est à dire que les différents textes sont entrés dans une base de données via une partie administration en PHP, puis une animation Flash récupère les entrées de la base de données pour les afficher.

    Comme Flash ne peut récupérer des données qu'au format XML (apparemment), il me fallait donc encoder les textes, soit au moment de l'enregistrement dans la base de données, soit au moment de la récupération.

    Et comme je suis censé ne pas être le seul à alimenter la base données, le système du logiciel n'est pas idéal...

    Mais merci beaucoup du renseignement, je vais de ce pas télécharger ce logiciel en attendant de coder mon propre programme de remplacement de caractères spéciaux...

    Sinon, si vous avez d'autres suggestions...

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Tu pourrais utiliser une fonction comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function personal_entities($string)
    {
       static $tab = array();
       $entities = get_html_translation_table(HTML_ENTITIES);
       foreach( $entities as $k => $v )
          $tab[$k] = '&#' . ord($k) . ';';
       return strtr($string, $tab);
    }
    A voir si ça peut te convenir.

    [edit]

    Mais en fait pourquoi vouloir utiliser des entités dans ton xml ?
    A part pour les guillemets (attributs), chevrons, ce n'est pas nécessaire si on a défini le bon encodage.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 41
    Par défaut
    Ben, en fait, l'encodage du fichier XML semble être le bon (encoding="UTF-8"), mais lors de la lecture par le Flash, j'ai de jolis points d'interrogations en lieu et place des caractères accentués...

    D'où la recherche d'un encodage par php.

    Je vais essayer votre code et vous tiendrais au courant.

    [edit]

    Je viens de m'apercevoir que la version du fichier était 1.0
    (<?xml version='1.0' encoding='UTF-8' ?>)

    Cela peut-il jouer dans le résultat ?

  6. #6
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Non, la version d'xml n'a pas de rapport.

    Comment est généré ton xml ?
    D'où proviennent les données qui y sont enregistrées ?

    Si elles viennent d'une base de données, il faut savoir dans quel encodage elles sont stockées, tu dois les transformer si ce n'est pas le bon charset.

    Pour mysql, voir SET NAMES.

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

Discussions similaires

  1. librairie c++ pour xml.???
    Par elekis dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 08/11/2004, 20h46
  2. [String]Convertir pour xml
    Par Pill_S dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/11/2004, 19h41
  3. [xml editeur ] quel plugin pour xml?
    Par champion dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/08/2004, 09h52
  4. Equivalent à TCppWebBrowser pour BCB5 Standard
    Par bartfr dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/03/2004, 16h11
  5. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07

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