Jump to content

[PARSER XML] Help me please

Featured Replies

Posted

Recyclage de topic
Voir plus bas...

Bonjour, c'est encore moi...

Sur un de mes sites je regroupe les news de différents sites hardware grace aux codes javascript qu'ils fournissent.

Cette page se trouve ici : http://www.bod.power-heberg.com/news/

Seulement dés qu'un site ne répond pas (qu'il est hors ligne) le chargement de la page s'arréte et les news des sites suivants ne sont alors pas affichées.

Vous me suivez ?

Y'aurait-il un script qui me permette l'abandon de la requéte a ce site et de passer alors au site suivant aprés X secondes d'attente ?

euuu pourquoi tu n'utilise pas les flux rss ??

Xoops peut parfaitement lire les flux rss

  • Author

Ben j'ai essayé, page blanche a chaque fois... :transpi:

En fait je veut avoir toutes les news sur une seule et méme page, et ca Xoops ne le permet pas (enfin avec le module manchette)...

Et pour récupérer les flux RSS j'ai pas trouvé de solutions...

Enfin si j'ai trouvé ce script : http://www.bod.power-heberg.com/rss.txt

Je ne l'ai pas encore essayé, mais il ma l'air bien compliqué... :roule:

Puis je me demande si ca ne fera pas le méme, cad que si le serveur du site est down, pas de flux et donc l'interprétation php va certainement bloquer nan ? :mdr:

Bon, je vais essayer le script que j'ai trouver pour voir si ca marche...

Pour que tes fonctions de récupération de news ne soient pas bloquantes, il faudrait qu'elles s'exécutent dans des threads séparés. Or javascript ne possède pas ce genre de fonctionnalités...

Je pense que ton problème sera difficile à résoudre... :transpi:

  • Author

Oui c'est ca le probléme...

Sur un autre forum une personne m'a parlé du XmlHttpRequest, je voit ce que c'est, c'est ce qui est utilisé pour l'interface Gmail mais j'y connais rien...

Bon, le script que j'ai trouvé donne ca : http://www.bod.power-heberg.com/rss.php, donc je l'abandonne...

Bon, d'autres idées ? :oops:

Oui c'est ca le probléme...

Sur un autre forum une personne m'a parlé du XmlHttpRequest, je voit ce que c'est, c'est ce qui est utilisé pour l'interface Gmail mais j'y connais rien...

Bon, le script que j'ai trouvé donne ca : http://www.bod.power-heberg.com/rss.php, donc je l'abandonne...

Bon, d'autres idées ? :oops:

oui, il te suffit de supprimer les éléments en trop dans le script, et là ca devrait aller mieux ;)

  • Author

Oui, le décrasser des trucs inutiles pour ne garder que les titres est une bonne idée, seulement regarde les liens des news, ils renvoient tous vers la page ou ils se trouvent... :oops:

  • Author

Si seulement tous les sites avaient ceci : http://www.infos-du-net.com/php-articles.php?n=15

Ca me permettrais de faire un include directement dans le php, seulement il n'y a que 2 ou 3 sites qui le font...

Le reste c'est comme pc inpact c'est fait pour du javascript, et donc si je fait un include ca va donner ca :

document.write('06/06 : Récepteur TNT externe PCTV MEDIACENTER 200e

'); document.write('06/06 : Du Soleil pour une meilleure Pomme ?

'); document.write('06/06 : Sacem : Toutes nos lignes sont occupées...

....

A mois que qu'un gentil inpactien me montrerais un code pour le nettoyer des document.write(' et '); :chant:

ben sinon à la rigueur tu télécharges un parseur de rss open source, et tu le places sur ton site

  • Author
ben sinon à la rigueur tu télécharges un parseur de rss open source, et tu le places sur ton site

:eeek2:

Ca fonctionne ! :yes:

<?php
/* ------------------------------------------------------
Parser de rss - by comscripts
------------------------------------------------------- */

$site = "http://www.pcinpact.com/include/news.xml";
$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);

if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);

for( $i = 0; $i < count($items)-1; $i++ ) {
 eregi("<title>(.*)</title>",$items[$i+1], $title );
 eregi("<url>(.*)</url>",$items[$i+1], $url );
 eregi("<categorie>(.*)</categorie>",$items[$i+1], $cat);
 echo "<li><a href='".$url[1]."'>".$title[1]."</a> - ".$cat[1];
}
}

?>

Bon faut que je le bidouille un peu pour qu'il affiche les dates devant la news mais ca fonctionne ! :rhooo:

:chant:

et ca ?

<?php
/* ------------------------------------------------------
Parser de rss - by comscripts
------------------------------------------------------- */

$site = "http://www.pcinpact.com/include/news.xml";
$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);

if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);

for( $i = 0; $i < count($items)-1; $i++ ) {
eregi("<title>(.*)</title>",$items[$i+1], $title );
eregi("<link>(.*)</link>",$items[$i+1], $url );
eregi("<categorie>(.*)</categorie>",$items[$i+1], $cat);
echo "<li><a href='".$url[1]."'>".$title[1]."</a> - ".$cat[1];
}
}

Edited by Agonistic

  • Author

Version béta de ma page récupéreuse de rss : http://bod148.free.fr/news/ :8

Un joli assemblage de 9 fichiers php pour votre plaisir ! :-D

Vous voulez ajouter d'autres site ? demandez le moi ! ;)

Par contre le flux de Hardware.fr passe pas ! :fete:

Et celui de blue-hardware passe mal ! :craint:

Et Nokytech n'a pas de flux xml ! :sucre:

Et moi je vais dormir ! :byebye:

  • Author

Heu, toujours moi ! :francais:

J'ai un probléme pas trés important mais super chiant quand méme...

Donc je m'explique :

Dans le script on peut choisir le nombre de news a afficher en retranchant un certain nombre de news au nombre total, vous me suivez ? :sucre:

Seulement sur certains site (comme ppc) le nombre de news dans le XML varie sans cesse et donc comme il retranche toujours le méme nombre, ben défois ca affiche rien, défois ca en affiche un ou deux.. :roule:

Voila le script :

<?php

$site = "http://www.presence-pc.com/rss.xml";
$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);

if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);

for( $i = 0; $i < count($items)-55; $i++ ) {
eregi("<title>(.*)</title>",$items[$i+1], $title );
eregi("<link>(.*)</link>",$items[$i+1], $url );
echo "<li><a href='".$url[1]."'>".$title[1]."</a>";
}
}

?>

Donc si qqn s'y connait pourrait-il m'expliquer comment pourrais-je faire pour que le script compte les news a afficher plutot que de le retrancher au nombre total de news ?

Ca se passe dans cette ligne, mais comment la modifier ? :

for( $i = 0; $i < count($items)-55; $i++ )

Merci d'avance aux courageux... :francais:

for( $i = 0; $i < 12; $i++ )

Ca devrait t'en afficher 12... change le nombre à ta convenance.

Par contre tu devrait aussi vérifier que ton nombre choisi est < count($items)

  • Author

Merci ! :francais:

J'suis vraiment une quiche quand méme ! :sucre:

C'était pourtant pas compliqué... :francais:

Si je ne vérifie pas que $i<count($items) ca va faire quoi si il en a moins que le nombre voulu ? Des lignes vides ?

Si tu essaies de boucler sur plus de news qu'il n'enexiste, tu peux te retrouver avec un dépassement d'index de tableau...

Donc un petit test pour éviter ça :)

  • Author

J'ai tenté un truc, et ca fonctionne !!! :

<?php

$nombre_limite = 20; // Nombre maximum d'éléments à afficher
$site = "http://www.pcinpact.com/include/news.xml";

$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);

if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);
$nb = count($items); 
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite; 

for ($i=0; $i<$maximum; $i++) {
eregi("<title>(.*)</title>",$items[$i+1], $title );
eregi("<link>(.*)</link>",$items[$i+1], $url );
echo "<li><a href='".$url[1]."'>".$title[1]."</a>";
}
}

?>

:francais::francais:

Archived

This topic is now archived and is closed to further replies.