Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * URLs des flux RSS
- */
- $feeds = array(
- array('website' => 'Alsacreations', 'feed_url' => 'http://www.alsacreations.com/rss/actualites.xml'),
- array('website' => 'Developpez', 'feed_url' => 'http://www.developpez.com/index/rss'),
- array('website' => 'Les intégristes', 'feed_url' => 'http://www.lesintegristes.net/articles/feed/'),
- );
- /**
- * Lecture des flux
- */
- libxml_use_internal_errors(true);
- $news = array();
- foreach ($feeds as $feed) {
- $raw_feed = simplexml_load_file($feed['feed_url']);
- /**
- * Si le flux a pu être lu on le traite, sinon on passe au flux suivant
- */
- if (false !== $raw_feed) {
- $namespaces = $raw_feed->getNamespaces(true);
- $raw_news = $raw_feed->xpath('/rss//item');
- /**
- * On lit et on formatte la date
- */
- foreach($raw_news as $key => $item) {
- /**
- * On récupére la date dans le noeud dc:date ou puDate, selon le format du flux
- */
- if (empty($item->pubDate) && isset($namespaces['dc'])) {
- $item_date = $item->children($namespaces['dc']);
- $date = new DateTime($item_date->date);
- } else {
- $date = new DateTime($item->pubDate);
- }
- /**
- * Formattage des données pour plus tard...
- */
- $raw_news[$key]->addChild('timestamp', $date->getTimestamp());
- $raw_news[$key]->addChild('displayDate', $date->format('d/m/Y H:i:s'));
- $raw_news[$key]->addChild('website', $feed['website']);
- }
- /**
- * On stocke les news dans un tableau global
- */
- $news = array_merge($news, $raw_news);
- unset($raw_feed, $raw_news);
- }
- }
- /**
- * On trie les entrées par date (noeud timestamp)
- */
- function cmp_timestamp($a, $b)
- {
- return $b->timestamp - $a->timestamp;
- }
- usort($news, 'cmp_timestamp');
- /**
- * On affiche le résultat dans le template.
- */
- header('Content-Type: text/html; charset=UTF-8');
- ?>
- <!DOCTYPE html>
- <html lang="fr">
- <head>
- <meta charset="utf-8" />
- <title>Les news</title>
- <style>
- body {
- font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 100%;
- }
- .news-title, .news-source, .news-body {
- padding: 15px;
- margin: 15px;
- background: #efefef;
- border: 1px solid #aaaaaa;
- }
- .news-title {
- margin-top: 50px;
- }
- hr {
- margin: 15px;
- border: 0;
- background: #aaaaaa;
- height: 15px;
- }
- </style>
- </head>
- <body>
- <h1>Les dernières news</h1>
- <?php foreach ($news as $post): ?>
- <h2 class="news-title">
- <a href="<?php echo $post->link; ?>"><?php echo $post->title; ?></a>
- </h2>
- <p class="news-source">
- Publié le : <?php echo $post->displayDate; ?> sur <?php echo $post->website; ?>
- </p>
- <div class="news-body">
- <?php echo $post->description; ?>
- </div>
- <hr>
- <?php endforeach; ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement