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

PHP & Base de données Discussion :

générer un fichier xml avec des caratéres speciaux via php


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut générer un fichier xml avec des caratéres speciaux via php
    Bonsoir !

    Je créer dynamiquement un fichier XML en PHP depuis une base de données après l'ajout du donnée.

    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
    49
     
    <?php
    *
    *
    *
    // insertion donnée
    include 'connexion.php';
    mysql_query("SET NAMES 'UTF8'");
     
     
    mysql_query("insert into articles values('', '$auteur', '$nom', '$titre', '$description', '$fichier', '$datedebut', '$datefin')") or die("erreur insertion donner". mysql_error());
     
    /*$req1=mysql_query("insert into articles values('', '$auteur', '$nom', '$titre', '$description', '$fichier', '$dated','$dated')") or die("erreur l'ajout des donnees". mysql_error());*/
     
      //$sql="insert into articles values('', '$auteur', '$nom', '$titre', '$description', '$fichier', '$dated','$dated')";
    //*********
    echo "données ajouter avec succès";
    //creation fichier xml
    mysql_query("SET NAMES 'UTF8'");
     
    $req1=mysql_query("SELECT num_art,auteur, nom_art, titre_art, description_art, DATE_FORMAT(date_d_art , '%d/%m/%Y' ) as date_d_art, DATE_FORMAT(date_f_art , '%d/%m/%Y' ) as date_f_art from articles ORDER BY num_art DESC") or die("erreur l'ajout des donnees". mysql_error());
     
    $xml = '<?xml version="1.0" encoding="UTF-8"?>'.'<root>';
    $xml .= '<articles>';
     
     while ($l = mysql_fetch_array($req1)) {
     
    $xml .= '<num_art>'.$l['num_art'].'</num_art>';
    $xml .= '<auteur>'.$l['auteur'].'</auteur>';
    $xml .= '<nom_art>'.$l['nom_art'].'</nom_art>';
    $xml.='<titre_art>'.$l['titre_art'].'</titre_art>';
    $xml.='<description_art>'.$l['description_art'].'</description_art>';
    $xml.='<date_d_art>'.$l['date_d_art'].'</date_d_art>';
    $xml.='<date_f_art>'.$l['date_f_art'].'</date_f_art>';
     
     
     }
    $xml .= '</articles>';
     
     $xml .= '</root>';
     
     $fp = fopen("xml/articles/articles.xml", 'w+');
     //print('c est le :'.$datet.'<br/>');
     fputs($fp, $xml);
     fclose($fp);
    *
    *
    *
    ?>
    ceci va me créer un fichier XML nommé articles.xml, tous passe bien , mais s'il y a de contenu qui contient des caractères spéciaux là ou ça me cause de problème au niveau de l’exploitation de mon fichier

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    <articles>
    <num_art>8</num_art>
    <auteur></auteur>
    <nom_art>طبق اليوم</nom_art>
    <titre_art>كراتان الديك الرومي بالخضر</titre_art>
    <description_art>< حبتا جزر ></description_art>
    <date_d_art>05/12/2010</date_d_art>
    <date_f_art>06/12/2010</date_f_art>
    </articles>
    </root>
    y a-t-il une solution pour forcer l'ajout des caractères spéciaux ?

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi ne pas utiliser des outils adapter comme SimpleXML, DOMDocument ou XMLWriter (c'est pas ce qui manque en lib xml dans PHP)

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    pourquoi ne pas utiliser des outils adapter comme SimpleXML, DOMDocument ou XMLWriter (c'est pas ce qui manque en lib xml dans PHP)
    je veux forcer l'ajout du caractère spéciaux dans fichier XML, ainsi apres je vais exploiter ses données via AJAX pour l'afficher.
    si le fichier xml contient un caractère le mouvement de récupération ne marche plus

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 099
    Points : 8 208
    Points
    8 208
    Billets dans le blog
    17
    Par défaut
    exemple :
    Où sont les caractères spéciaux pour toi dans l'exemple que tu as donné ?
    Serait-ce le < suivant <description_art> et le > précédant </description_art> ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Où sont les caractères spéciaux pour toi dans l'exemple que tu as donné ?
    Serait-ce le < suivant <description_art> et le > précédant </description_art> ?
    ok exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <description_art>je suis << caratere speciaux >></description_art>

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 099
    Points : 8 208
    Points
    8 208
    Billets dans le blog
    17
    Par défaut
    Donc là pour toi les caractères spéciaux sont << et >> ?
    En XML < et > doivent être échappés :

    The ampersand character (&) and the left angle bracket (<) MUST NOT appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they MUST be escaped using either numeric character references or the strings " &amp; " and " &lt; " respectively. The right angle bracket (>) may be represented using the string " &gt; ", and MUST, for compatibility, be escaped using either " &gt; " or a character reference when it appears in the string " ]]> " in content, when that string is not marking the end of a CDATA section.
    http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Donc là pour toi les caractères spéciaux sont << et >> ?
    En XML < et > doivent être échappés :



    http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
    Oui mais si je veux forcer l'ajout presque tous caractères spéciaux ça dépend pas
    >
    existe pas une solution pour ça

    est ce que CDATA peut résoudre mon problème ainsi j'utilise unicode UTF-8

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 099
    Points : 8 208
    Points
    8 208
    Billets dans le blog
    17
    Par défaut
    wi mais si je veux forcer l'ajout presque tous caractères speciaux ça dépend pas
    Pas compris.

    existe pas une solution pour ça
    &gt; / htmlspecialchars( ) si nécessaire.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Pas compris.


    &gt; / htmlspecialchars( ) si nécessaire.
    ah je vois, malheureusement je dois forcer l'ajout du caractères spéciales y a t'il pas une solution alors ?

  10. #10
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 099
    Points : 8 208
    Points
    8 208
    Billets dans le blog
    17
    Par défaut
    Je ne comprends pas ton problème.

    Si dans ton XML tu mets &lt; plus tard il sera considéré en tant que < par la lib XML traitant le fichier.

    Autrement dit, pour qu'une chaîne soit valide XML il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $string = '124 < 324 == FALSE' ;
    $xml = '<op>' . htmlspecialchars($string) . '</op>' ;
    Ceci est fait automatiquement par les libs telles DOM ou SimpleXML, plus besoin de htmlspecialchars( ), ex. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $node->addChild('op', $string) ;
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. Fabriquer un fichier XML avec des imbrications
    Par zooffy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/09/2007, 10h20
  2. [XML] générer un fichier xml avec du php : problème de boucle
    Par freija dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/02/2007, 18h25
  3. [SAX] Je dois générer un fichier XML avec SAX
    Par moi95 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 24/01/2007, 12h22
  4. Réponses: 2
    Dernier message: 27/05/2004, 00h40

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