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

        Parser rss

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown