RSS-Feed: Abrufen

Erstellt am 08.03.2022 Lesedauer ≤ 1 Min.

Dieses Skript ruft einen externe Newsfeed ab.

Querverweise

Das Skript

Stand: 21.10.2022

<?php
$wo = parse_url($feed_url);
$feedcache_path = __DIR__.'/'.$wo["host"].'_cache.html';
 
// Wie alt in Sekunden darf der Cache sein? (1800 s entsprechen einer halben Stunde)
// $feedcache_max_age = 1800;
$feedcache_max_age = 1800;
// Wie viele Einträge sollen angezeigt werden?
$max_entries = 5;
 
if(!file_exists($feedcache_path) or filemtime($feedcache_path) < (time() - $feedcache_max_age)) {
  $xml = simplexml_load_string(file_get_contents($feed_url));
  $output = '<sub>Die '.(int)$max_entries.' neusten Artikel bei</sub><h3><a class="rrl" target="_blank" href="'.htmlspecialchars($xml->channel->link).'">'.htmlspecialchars($xml->channel->title).'</a></h3><hr/>'.PHP_EOL;
  $entries = $xml->channel->item;
  $counter = 0;
//  $output .= '<ul>';
 
  foreach($entries as $root) {
    $counter++;
    // Ausgabe nach x Einträgen beenden:
    if($counter > $max_entries) {
      break;
    }
    $date = date('d.m.Y', strtotime($root->pubDate));
    // Anreißertext:
    $description = strip_tags($root->description);
    $output .= '<h4><a class="rrl" href="'.htmlspecialchars($root->link).'" target="_blank" title="In neuem Fenster/Tab öffnen">'.htmlspecialchars($root->title).'</a></h4>'.PHP_EOL;
    $output .= '<p>'.$description.' <sub>('.htmlspecialchars($date).')</sub></p>'.PHP_EOL;
  }
  $output .= '<hr/>';
  echo $output;
  file_put_contents($feedcache_path, $output);
} else {
  echo file_get_contents($feedcache_path);
}
?>