Parser du XML en PHP

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Lilive
Salamandre
Messages : 39
Inscription : 02 mars 2006, 09:50

Parser du XML en PHP

Message par Lilive »

Bonjour,
Je souhaite parser du XML de type RSS 2 en PHP avec le code suivant (récupéré sur comscripts) :

Code : Tout sélectionner

    $fp = @fopen($site,"r");
    while(!@feof($fp)) $raw .= @fgets($fp, 4096);
    fclose($fp);
    if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
     $items = explode("<item>", $rawitems[0]);
     $limite=20; // nombre d'items à afficher
     if(count($items)>$limite){$qtte=$limite;}else{$qtte=count($items);}
     for( $i = 0; $i < $qtte-1; $i++ ) {
      eregi("<title>(.*)</title>",$items[$i+1], $title );
      eregi("<link>(.*)</link>",$items[$i+1], $link );
      eregi("<description>(.*)</description>",$items[$i+1], $descr );
      print("<div id='acturss'><a href='$link[1]' target='_blank'>$title[1]</a><br>$descr[1]</div>");
     }
    }
ça fonctionne plutôt bien sauf dans un cas : quand entre les balises <descripteur> le contenu est mis en <![CDATA[...]]> il ne récupère le message que à partir du premier > trouvé jusqu'à ]]>
N'étant pas vraiment spécialiste dans le domaine de l'XML et du parsing, j'avoue avoir du mal à comprendre l'erreur... si quelqu'un à une idée... :?
Lilive
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Tu utilises quelle version de PHP ? Tu sais qu'il existe des fonctions pour manipuler le XML directement ?

SimpleXML en PHP5 (vraiment simple et rapide !) ou DOM (si tu connais déjà le DOM, mais c'est plus lent)

Si tu as un vieux PHP4 tu peux au moins espérer avoir l'ancien DOM XML ou, à défaut, un analyseur séquentiel.

Franchement, évite à tout prix de manipuler le XML toi-même via des expressions régulières.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Lilive
Salamandre
Messages : 39
Inscription : 02 mars 2006, 09:50

Message par Lilive »

Malheureusement, c'est ce que je suis en train de faire... Je ne tiens vraiment pas à me mettre à un autre langage. Je ne connais de DOM que le nom...
Je suis chez Free et ils semblent en être à la version 5 de php, mais l'hébergement chez free est temporaire le temps de faire le site car il sera ensuite hébergé sur un serveur du CNRS dont je ne connais pas encore la version de PHP...
En tout cas, merci du conseil, je vais essayer de trouver une autre solution en espérant que ça ne me prenne pas trop de temps...
Lilive
Lilive
Salamandre
Messages : 39
Inscription : 02 mars 2006, 09:50

Message par Lilive »

Après vérification : Free n'en est qu'à la version 4 de PHP et n'autorise donc pas simpleXML... J'ai vu qu'il existait des fonctions DOM XML (apparemment installée chez Free) : pensez-vous que je puisse m'en tirer avec une fonction du genre XMLtree ?
Lilive
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité