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 :

Lecteur fichier XML


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut Lecteur fichier XML
    Bonjour,

    Je ne sais pas si je poste dans le bon forum car cela concerne aussi bien le PHP, que le XML et MySQL on verra bien si un modo me dépalce le fil

    Voilà je suis en train de faire une fonction permettant de lire des fichiers XML et des les insérer dans une base de données mais je bloque sur deux choses

    - dans la balise <description> je me retrouve avec des <![CDATA[ sur certain flux RSS et je n'arrive pas à les supprimer avant de les insérer dans ma base j'ai mis la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $row[1] = str_replace("<![CDATA[ ","",$row[1]);
    $row[1] = str_replace("]]>","",$row[1]);
    - ensuite je suis confronté au problème UTF8 et iso-8859-1 j'ai vu que cette info était stocké dans l'entete du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="iso-8859-1"?>
    est ce possible de récuperer cette info afin de faire un utf8_decode() avant de le mettre en base de données ?

    Merci d'avance pour votre aide
    Bonne journée
    Ludo

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par lelectronique.com
    - dans la balise <description> je me retrouve avec des <![CDATA[ sur certain flux RSS et je n'arrive pas à les supprimer avant de les insérer dans ma base j'ai mis la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $row[1] = str_replace("<![CDATA[ ","",$row[1]);
    $row[1] = str_replace("]]>","",$row[1]);
    ça doit marcher (un espace de trop après la balise cdata ouvrante) mais théoriquement vous ne devriez pas les enlever puisqu'elle servent à protéger des caractères spéciaux.

    Citation Envoyé par lelectronique.com
    - ensuite je suis confronté au problème UTF8 et iso-8859-1 j'ai vu que cette info était stocké dans l'entete du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="iso-8859-1"?>
    est ce possible de récuperer cette info afin de faire un utf8_decode() avant de le mettre en base de données ?
    L'extension iconv est peut être plus adaptée, mais oui c'est possible :
    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
    16
    17
    18
    19
    20
    21
    <?php
    $xml = <<< EOX
    <?xml version="1.0" encoding="iso-8859-1"?>
     
    <A>
        <B id="1">
            <C>azerty</C>
        </B>
        <B id="2">
            <C>éèëê</C>
            <C>äâà</C>
        </B>
    </A>
    EOX;
     
    if (preg_match('/encoding="([^"]+)"/', $xml, $m)) {
        $xml = iconv($m[1], 'UTF-8', $xml);
    }
    header('Content-type: text/xml; charset=utf-8');
    echo $xml;
    ?>

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    407
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2003
    Messages : 407
    Points : 117
    Points
    117
    Par défaut
    merci pour aide le premier point est résolu effectivement l'espace coinçait

    pas contre je n'ai pas très bien saisi ta solution sur le deuxième point peux tu me donner plus d'info ?

    bonne soirée
    A+

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par lelectronique.com
    pas contre je n'ai pas très bien saisi ta solution sur le deuxième point peux tu me donner plus d'info ?
    Sur quelle partie ? Vous vouliez récupérer l'encodage : c'est ce que permet de faire preg_match en suivant un motif, ici ce qui est situé entre les doubles quotes de l'attribut encoding - qu'il faut comprendre comme tout ce qui n'est pas un double quote entre ces deux double quotes - (pour bien comprendre ce mécanisme je vous renvoie à Initiation aux expressions régulières en PHP). La fonction iconv est l'équivalent de utf8_encode ou utf8_decode sauf qu'elle gère beaucoup plus d'encodages (à vous de voir à ce niveau suivant ce que vous pourriez avoir).

Discussions similaires

  1. Recuperation du fichier xml
    Par Geulderack dans le forum XMLRAD
    Réponses: 10
    Dernier message: 28/02/2003, 12h06
  2. Insertion dans un fichier XML
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 4
    Dernier message: 27/02/2003, 18h16
  3. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 16h22
  4. [Kylix] Composant IBM pour fichiers XML
    Par Mister Nono dans le forum EDI
    Réponses: 1
    Dernier message: 29/09/2002, 21h28
  5. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 16h29

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