[SimpleXML] Lecture flux RSS
Bonjour,
Je me lance dans la lecture de flux RSS en php, j'ai donc commencé par lire ce tuto : http://ghostdogpr.developpez.com/articles/rss/
J'ai deux petits problèmes :
Problème N°1 :
J'ai donc dans ma page actualites.php, exactement cet extrait de code :
Code:
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
| <?php
function lit_rss($fichier,$objets) {
// on lit tout le fichier
if($chaine = @implode("",@file($fichier))) {
// on découpe la chaine obtenue en items
$tmp = preg_split("/<\/?"."item".">/",$chaine);
// pour chaque item
for($i=1;$i<sizeof($tmp)-1;$i+=2)
// on lit chaque objet de l'item
foreach($objets as $objet) {
// on découpe la chaine pour obtenir le contenu de l'objet
$tmp2 = preg_split("/<\/?".$objet.">/",$tmp[$i]);
// on ajoute le contenu de l'objet au tableau resultat
$resultat[$i-1][] = @$tmp2[1];
}
// on retourne le tableau resultat
return $resultat;
}
}
$rss = lit_rss("http://www.20minutes.fr/rss/une.xml",array("title","link","description","pubDate"));
echo '<center><table cellpadding="0" cellspacing="0" class="portal_table" width="100%">';
foreach($rss as $tab) {
echo '<tr><td class="header">'.$tab[0].'</td></tr>';
echo '<tr><td>'.$tab[2].' <a href="'.$tab[1].'">Lire tout l\'article</a></td></tr>';
echo '<tr><td><div align=right>posté le '.date("d/m/Y",strtotime($tab[3])).'</div></td></tr>';
}
echo '</table></center>';
?> |
Je souhaite récuperer le flux RSS du site 20minutes.fr, hors la description de l'item ne s'affiche pas... (voir http://www.caleoo.com/actualites.php).
Peut être ça vient du site 20minutes.fr ? :?
Si quelqu'un peut tester ce flux xml :)
Problème N°2 :
Je souhaite maintenant récupérer le flux RSS du site DailyMotion, donc toujours avec le même script :
Code:
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 50 51 52 53 54 55 56 57
| <?php
//FLUX RSS 2
function lit_rss2($fichier,$objets) {
// on lit tout le fichier
if($chaine = @implode("",@file($fichier))) {
// on découpe la chaine obtenue en items
$tmp = preg_split("/<\/?"."item".">/",$chaine);
// pour chaque item
for($i=1;$i<sizeof($tmp)-1;$i+=2)
// on lit chaque objet de l'item
foreach($objets as $objet) {
// on découpe la chaine pour obtenir le contenu de l'objet
$tmp2 = preg_split("/<\/?".$objet.">/",$tmp[$i]);
// on ajoute le contenu de l'objet au tableau resultat
$resultat[$i-1][] = @$tmp2[1];
}
// on retourne le tableau resultat
return $resultat;
}
}
$rss= lit_rss2("http://www.dailymotion.com/rss/fr/featured/1",array("title","link","description","pubDate"));
echo '<center><table cellpadding="0" cellspacing="0" class="portal_table" width="100%">';
foreach($rss as $tab) {
echo '<tr><td class="header">'.$tab[0].' <a href="'.$tab[1].'"> Voir la video</a></td></tr>';
echo '<tr><td>'.$tab[2].'</td></tr>';
}
echo '</table></center>';
?> |
Dans ce cas, la lecture de la description fonctionne(voir http://www.caleoo.com/actualites_dm.php), mais à la fin de chaque description apparait les caractères ]]>
- Voilà j'ai cherché des solutions à ces deux problèmes toute l'après-midi mais en vain, donc je fais appel à vous pour m'aider...
Peut-être que la fonction que j'ai récupéré sur le tutoriel est un peu trop simple et pas assez souple pour accueilir différents formats/structures... de flux RSS :?
Merci :)