Afficher un flux RSS avec simplexml

Petit nouveau ! | 8 Messages

21 août 2009, 00:39

Bonsoir,

voila alors j'ai mon code pour lister les titres d'un flux mais comment le modifier pour n'afficher qu'un certain nombre de news ? (et pas toutes)
<?php
$xml = simplexml_load_file("lien-du-flux-rss.xml");
echo '<ul>';
foreach($xml->channel->item as $news) {
	echo '<li><a href="'.$news->link.'">', utf8_decode((string) $news->title), '</a></li>';
}
echo '</ul>'; ?>

Mammouth du PHP | 2937 Messages

21 août 2009, 01:05

Utilise une boucle for.
$items = $xml->channel->item;
$nb_items = 5; // Disons que tu ne veux afficher que 5 entrées
for ($i = 0; $i < $nb_items; $i ++)
{
  echo '<li><a href="'.$items[$i] -> link.'">'.utf8_decode ((string) $items[$i] -> title).'</a></li>'
}

Petit nouveau ! | 8 Messages

21 août 2009, 18:29

Merci pour ce code, ça marche mais pas pour les rss donnés en php (par exemple "http://www.phpfrance.com/tutoriaux/rss.php" ne marche pas). Faut il s'y prendre d'une autre manière pour ceux là ?

Mammouth du PHP | 2937 Messages

21 août 2009, 18:37

Merci pour ce code, ça marche mais pas pour les rss donnés en php (par exemple "http://www.phpfrance.com/tutoriaux/rss.php" ne marche pas). Faut il s'y prendre d'une autre manière pour ceux là ?
Le bout de code donné ci-dessus est valable pour les flux au format RSS 2.0 (le Really Simple Syndication de Dave Winer). Or, celui des tutos de PHPFrance est au format RSS 1.0 (RDF Site Summary, un format plus verbeux issu du RDF) ; pour ce format spécifique, essaie de procéder comme suit :
$items = $xml -> item;
le reste du code demeurant inchangé.

Peut-être ne vais-je pas me hasarder à parler du format Atom (qui est un autre format de syndication de contenu). ;)