Partage
  • Partager sur Facebook
  • Partager sur Twitter

Parser rss

Affichage d'image impossible :(

Sujet résolu
13 juillet 2008 à 18:07:52

Bonjour à toutes et à tous :)
Depuis plus de deux heures, j'essaye d'afficher avec le titre et la date l'image correspondant à un flux rss.

Pour cela, j'ai utiliser " magpierss " ainsi qu'un script donner.
Le problème c'est que sa n'affiche que le titre , et la date .

Or j'aurais aimais que la vignete soit aussi ajouter car le flux rss en contient
( exemple : http://feediz.01net.com/synd/2203.xml )

J'ai beau chercher sur google, rien n'y fait :(

Merci de bien vouloir m'aider !!

Voici " feedparser.php " qui fonctionne avec magpierss :
<?php
// on inclut la classe magpierss
require_once("magpierss/rss_fetch.inc");

// la fonction FeedParser() va extraire le contenu pour l'afficher
// elle prend en paramètre $url_feed, l'url du flux RSS et $nb_items_affiches, le nombre d'éléments (items) à afficher
function FeedParser($url_feed, $nb_items_affiches) {

    // lecture du fichier distant (flux XML)
    $rss = fetch_rss($url_feed);

    // si le parcours du fichier se passe bien, on lit les élements (items)
    if (is_array($rss->items))  {

        // on ne garde que les $nb_items_affiches premiers éléments (items), nombre défini dans l'en-tête de la fonction
        $items = array_slice($rss->items, 0, $nb_items_affiches);

        // on peut récupérer les informations sur le site proposant le flux (optionnel)
        $site_titre = $rss->channel["title"]; // titre du site
        $site_lien = $rss->channel["link"]; // lien du site
        $site_description = $rss->channel["description"]; // description du site

        // ou aussi les informations sur le logo du site (optionnel)
        $logo_titre = $rss->image["title"]; // titre du logo
        $logo_description = $rss->image["description"]; // description du logo
        $logo_url = $rss->image["url"]; // chemin du logo
        $logo_lien = $rss->image["link"]; // lien vers lequel pointe le logo


        // à présent on stocke les données dans $html, variable à afficher

        // logo du site sous forme de lien
        $html = "<span><a href=\"$logo_lien\"><img src=\"$logo_url\" alt=\"$logo_description\" style=\"border:none\"></a></span>\n";

        // titre sous forme de lien
        $html .= "<a href=\"$site_lien\" title=\"$site_description\">$site_titre</a><br />\n";

        // on affiche la description du site proposant le flux
        $html .= "<span>$site_description</span><br clear=\"left\"><br />\n"; // le clear="left" renvoie à la ligne même s'il y a une image

        // on fait une boucle sur les informations : pour chaque item, récupérer $titre... et afficher
        foreach($items as $item) {

            // on mémorise les informations de chaque item dans des variables
            $titre = $item["title"];
            $lien = $item["link"];
            $description = $item["description"];
            $photo = $item["enclosure"];

            // la date utilisée pour les flux RSS est au format timestamp, il faut donc formater la date
            // conversion au format jj/mm/aa. pour plus d'informations, vous conférer au tutorial sur les timestamp
            $date = date("d/m/y",strtotime($item["pubdate"]));

            // la photo n'étant pas toujours présente, on test si elle existe
            if($photo != "") // si la photo existe
            $html .= "<img src=\"$photo\" alt=\"$titre\" style=\"float:left;margin-right:5px\">\n";

            // on affiche le titre de chaque item
            $html .= "<a href=\"".$lien."\" title=\"".$titre."\" target=\"_blank\">".$titre."</a><br>\n";

            // puis la date et la description
            $html .= "<span>$date - $description</span><br clear=\"left\"><br />\n";
        } // fin de la boucle

        // on retourne la variable $html au programme (elle contient le code HTML pour l'affichage du flux)
        return $html;
    } // fin du traitement du fichier
} // fin de la fonction FeedParser()
?>


et le code pour afficher le flux de 01net par exemple :

<?php
// on inclut le fichier contenant la fonction FeedParser()
require_once("feedparser.php");

// on affiche le flux, avec en paramètres, l'URL du flux, et le nombre d'éléments à afficher, ici 10
// par exemple pour afficher les 10 dernières actualités de NotoOn
echo FeedParser("http://feediz.01net.com/synd/2203.xml", 10);
?>
  • Partager sur Facebook
  • Partager sur Twitter
13 juillet 2008 à 18:40:26

Salut,

Est-ce que tu es sur PHP5? si oui j'ai une solution bien plus simple que ça!

  • Partager sur Facebook
  • Partager sur Twitter
13 juillet 2008 à 19:37:25

Essaye ça c'est beaucoup plus simple :

<?php
$url_xml = "http://feediz.01net.com/synd/2203.xml";
$xml = simplexml_load_file($url_xml);

foreach($xml->channel->item as $news) {
	echo 'titre : '.$news->title.'<br />';
	echo 'description : '.$news->description.'<br />';
	echo 'lien : '.$news->link.'<br />';
	echo 'date : '.$news->pubDate.'<br />';
	echo 'image :<img src="'.$news->enclosure[@url].'" border="0" /><br />';
	echo '<br /><br />';
}

?>
  • Partager sur Facebook
  • Partager sur Twitter