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 :

[SimpleXML] Récupérer des mots étrangers dans XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 21
    Points
    21
    Par défaut [SimpleXML] Récupérer des mots étrangers dans XML
    Bonjour / bonsoir,

    désolé pour le titre à rallonge.

    Je tente vaillament de parser un fichier xml avec php. Je suis encore en version 4 pour des raisons politiques.
    Du coup j'ai un code qui m'affiche correctement la valeur de mes noeuds etc.
    Sauf que je travaille en Persan et que là, c'est la catastrophe je me retrouve avec des ????? à la place de mon mot. Dans mon xml j'ai pourtant eu la possibilité d'ajouter mes mots sans soucis.
    Mon fichier php est en utf-8 et le xml aussi.
    Si encore il me transformait ça en utf-8 je dirais ok !

    Je pense que l'erreur doit venir de mon parsing php (que j'ai trouvé tout fait hein...)alors je me permet de vous le mettre ici. Je pense ça car j'arrive bien à récupérer mes mots Persans en passant par flash par exemple.

    Merci beaucoup beaucoup pour les gens qui ont une idée et encore pardon pour la longueur de la tartine.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
    // The XML file that you wish to be parsed
    $file = "xml_beginner.xml";
     
    // This function tells the parser what to do with the data once it reaches the contents
    // that appear between tags.
    function contents($parser, $data){
    	echo $data;
    }
     
    // This function tells the parser to place a <b> where it finds a start tag.
    function startTag($parser, $data){
    	echo "<b>";
    }
     
    // And this function tells the parser to replace the end tags with "<b><br />"
    function endTag($parser, $data){
    	echo "</b><br />";
    }
     
    // These lines create the parser and then set the functions for the parser to use when
    // reading the document.
    $xml_parser = xml_parser_create('');
     
    // Sets the functions for start and end tags
    xml_set_element_handler($xml_parser, "startTag", "endTag");
    // Sets the function for the contents/data
    xml_set_character_data_handler($xml_parser, "contents");
     
    // Opens the file for reading
    $fp = fopen($file, "r");
     
    // Read the file and save its contents as the variable "data"
    $data = fread($fp, 80000);
     
    // This if statement does two things. 1) it parses the document according to our 
    // functions created above. 2) If the parse fails for some reason it returns an
    // error message and also tells us which line the error occured at.
    if(!(xml_parse($xml_parser, $data, feof($fp)))){
    	die("Error on line " . xml_get_current_line_number($xml_parser));
    }
     
    // Free the memory used to create the parser
    xml_parser_free($xml_parser);
     
    // Close the file when you're done reading it
    fclose($fp);
    ?>

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

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

    a priori, le problème ne vient pas de ton code PHP. Le fait d'utiliser xml_parser_create() sans préciser d'encodage en paramètre, signifie que l'encodage de sortie sera le même que l'encodage d'entrée. Le problème doit plus venir de l'affichage de la page par le navigateur. Tu devrais ajouter une balise META précisant l'encodage de la page, pour tester...

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Merci pour ta réponse mais j'ai finalement opté pour SimpleXml. D'un côté c'est 1000x plus clair pour récupérer mes infos et en plus j'arrive bien à afficher mes mots en persans.

    Maintenant, yapluka trouver un hebergeur avec du php5 ou un truc équivalent en php4 (je suis sur le point de tester miniXml).

    Bonne soirée,

    Y

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

Discussions similaires

  1. Récupérer des mots dans un fichier html
    Par neterfari dans le forum C++/CLI
    Réponses: 5
    Dernier message: 03/04/2014, 09h49
  2. récupérer des mots séparés par un espace dans une ligne
    Par laurentze dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/06/2010, 16h04
  3. Réponses: 1
    Dernier message: 15/04/2009, 18h28
  4. Récupérer des mots séparés par un espace dans un .txt
    Par elnino67 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/05/2008, 22h13
  5. récupérer des données saisies dans un fichier
    Par natie_49 dans le forum C++
    Réponses: 6
    Dernier message: 24/11/2005, 11h29

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