RSS-Feed: Abrufen

Erstellt: 08.03.2022 Lesedauer ≤ 1 Min.

Dieses Skript ruft einen externe Newsfeed ab.

Querverweise

Das Skript

Stand: 21.10.2022

Verwendung auf eigenes Risiko. Keine Gewähr für Zuverlässigkeit, Sicherheit und Funktion. Beispielskript, es wird überlassen, wie es ist.

<?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);
}
?>