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

Bibliothèques et frameworks PHP Discussion :

[XML] XML encoding="ISO-8859-1" vers php


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [XML] XML encoding="ISO-8859-1" vers php
    bonjour à tous,

    je veux exploité un fichier XML avec du PHP, mais le souci est que le fichier XML est encoding="ISO-8859-1"
    donc je n'arrive pas a récupéré des nœud XML qui intègre des accents
    est ce que quelqu’un pourrais m'aider sur ce point
    merci d’avance

  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 778
    Points
    17 778
    Par défaut
    Peu importe l'encodage initial du document XML, il se manipule après exclusivement en UTF-8 côté PHP (dom, domxml, simplexml, ... - toutes les extensions qui reposent sur libxml2). Comment, sinon, permettre à un chinois ou je ne sais quoi, de pouvoir modifier le document ensuite comme il le veut ?

    Exemple, avec SimpleXML : soit vous encodez votre script en UTF-8 pour écrire directement $sxml->prénom par exemple (grandement préférable) sinon, avec un script en ISO-8859-1, ça vous oblige à faire, un truc de ce genre : $sxml->{utf8_encode('prénom')} à chaque fois.

    (et c'est de l'UTF-8 qui vous est renvoyé)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    les balises qui me posent problème sont les suivantes :
    <unité>Organigramme</unité>
    <prénom>Xavier</prénom>
    comment les récupérer en PHP
    merci encore de votre aide .

  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 778
    Points
    17 778
    Par défaut
    Va relire un fichier structuré comme XML, sans indentation, ...

    Quel est votre code ? En outre, on ne sait même pas sur quelle extension vous vous êtes orienté : si vous êtes parti sur DOM, par exemple, inutile qu'on aille sur SimpleXML, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $sxml = simplexml_load_file('monfichier.xml');
     
    foreach ($sxml->A2->A2B->Utilisateur as $u) {
        // Si script en UTF-8 (sortie supposée en UTF-8)
        echo $u->prénom;
        // Si script en ISO-8859-1 (sortie supposée en ISO-8859-1)
        echo utf8_decode($u->{utf8_encode('prénom')});
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $dom = new DomDocument;
    //$dom->preserveWhiteSpace = FALSE;
    $dom->load('monfichier.xml');
     
    foreach ($dom->getElementsByTagName('Utilisateur') as $u) {
        // Si le script est en UTF-8 (sortie supposée en UTF-8)
        $prenom = $u->getElementsByTagName('prénom')->item(0);
        echo $prenom->nodeValue;
        // Si le script est en ISO-8859-1 (sortie supposée en ISO-8859-1)
        $prenom = $u->getElementsByTagName(utf8_encode('prénom'))->item(0);
        echo utf8_decode($prenom->nodeValue);
    }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    ça marche super en SimpleXML merci encore
    pas d'erreur

    en DOM aussi c'est super ça marche bien

    // Si le script est en UTF-8 (sortie supposée en UTF-8)
    $prenom = $u->getElementsByTagName('prénom')->item(0);
    echo $prenom->nodeValue;

    génère une erreur si le fichier XML de départ est en ISO-8859-1
    Notice: Trying to get property of non-object in xxx.php on line 10

    encore une fois de plus merci

    voila le code épurer

    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
     
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <A>
    	<A1>
    	</A1>	
    	<A2>
    		<A2A>
    		</A2A>
    		<A2B>
    			<A2B1>
    			</A2B1>
    			<Utilisateur>
    				<prénom>Jean</prénom>
    			</Utilisateur>
    			<Utilisateur>
    				<prénom>Jacques</prénom>
    			</Utilisateur>
    		</A2B>
    	</A2>	
    </A>

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/10/2015, 15h35
  2. Réponses: 1
    Dernier message: 26/06/2015, 19h17
  3. Tester la possibilité d'encoder en iso-8859-1
    Par param_cat dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2010, 16h43
  4. Encoder en ISO 8859-1
    Par bibiodp dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 14/06/2007, 18h36

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