Diesen RSS-Feed-Reader habe ich lange Zeit um auf meiner Webseite RSS-Feeds einzublenden. Eingebunden wird das ganze über einen iframe in der Seite.
Z.B.:
<iframe src="https://your-domain/rssfeed.php?url=http://newsfeed.zeit.de/politik/index" width="100%" height="600"></iframe>
Viel Spaß bei der Nutzung!
Sourcecode
<?php $display_channel_name = "false"; $offset = "0"; $number_items = "0"; $number_chars = "0"; $rss_cache_dir = 'absolute path to your cache directory'; echo '<html>'."\n"; echo '<head>'."\n"; echo '<link rel="stylesheet" type="text/css" href="https://your-domain/rss_styles.css" />'."\n"; echo '</head>'."\n"; echo '<body>'."\n"; if(isset($_GET['url']) && $_GET['url'] != ''){ $url = trim(strip_tags($_GET['url'])); if(isset($_GET['display_channel_name'])){$display_channel_name = trim(strip_tags($_GET['display_channel_name']));}; if(isset($_GET['offset'])){$offset = trim(strip_tags($_GET['offset']));}; if(isset($_GET['num_items'])){$num_items = trim(strip_tags($_GET['num_items']));}; if(isset($_GET['num_chars'])){$num_chars = trim(strip_tags($_GET['num_chars']));}; $rss = ''; $rss_file = 'rss_'.md5($url); if(date("j",@filemtime("$rss_cache_dir/$rss_file")) == date("j",time())){ $fh = @fopen("$rss_cache_dir/$rss_file","r"); if($fh != ''){ while(!feof($fh)){ $rss .= fgets($fh,2048); }; fclose($fh); echo $rss; exit(); }; }; $ret = getrss($url); $rss_channel = $ret[0]; $rss_items = $ret[1]; if($display_channel_name == 'true'){ $rss .= '<h1>'."\n"; if($rss_channel['link']){ $rss .= '<a href="'.$rss_channel['link'].'" target="_blank">'.$rss_channel['title'].'</a><br/>'."\n"; }else{ $rss .= $rss_channel['title'].'<br/>'."\n"; }; $rss .= '<font size="-1">'.$rss_channel['description'].'</font>'."\n"; $rss .= '</h1>'."\n"; }; if($num_items == 0 or $num_items > count($rss_items)-$offset){$num_items = count($rss_items)-$offset;}; $rss .= '<table>'."\n"; for($i=0;$i<$num_items;$i++){ $rss .= '<tr><td><a class="link" href="'.$rss_items[$i]['link'].'" target="_blank">'.$rss_items[$i]['title'].'</a><br/>'."\n"; $rss .= '<div class="description">'."\n"; $description = ''; if(isset($rss_items[$i]['content:encoded']) && $rss_items[$i]['content:encoded'] != ''){ $description = $rss_items[$i]['content:encoded']; }elseif(isset($rss_items[$i]['description']) && $rss_items[$i]['description'] != ''){ $description = $rss_items[$i]['description']; }; if($description != ''){ if(($num_chars)&&($num_chars<strlen($description))){ $rss .= substr($description,0,strpos($description," ",$num_chars))." ..."; }else{ $rss .= $description; }; if($rss_items[$i]['link']){ $rss .= ' <a href="'.$rss_items[$i]['link'].'" target="_blank">mehr...</a><br/>'."\n"; }; }; $rss .= '</div></td></tr>'."\n"; }; if($num_items <= 0){ $rss .= '<tr><td>'."\n"; $rss .= '</td></tr>'."\n"; }; $rss .= '</table>'."\n"; if($rss_channel['dc:publisher']){$rss .= "<p>By {$rss_channel['dc:publisher']}</p>\n";}; if($rss_channel['dc:date']){$rss .= "<p>{$rss_channel['dc:date']}</p>\n";}; if($rss_channel['copyright']){$rss .= "<div class='copy'>{$rss_channel['copyright']}</div>\n";}; $fh = @fopen("$rss_cache_dir/$rss_file","w"); if($fh != ''){ fwrite($fh,$rss); }; echo $rss; }else{ echo 'Keine URL!<br>'."\n"; exit(); }; echo '</body>'."\n"; echo '</html>'."\n"; function getrss($url){ $rss_channel = array(); $rss_items = array(); $simple = implode('',@file($url)); $p = xml_parser_create(); xml_parse_into_struct($p,$simple,$vals,$index); xml_parser_free($p); $type=0; $id=0; for($i=0;$i<count($vals);$i++){ if((strtolower($vals[$i]['tag']) == 'channel') && ($vals[$i]['type'] == 'open')){$id=$vals[$i]['level']+1;}; if(($type == 0) && ($id == $vals[$i]['level'])){ $rss_channel[strtolower($vals[$i]['tag'])] = $vals[$i]['value']; }else{ $tmp[strtolower($vals[$i]['tag'])] = $vals[$i]['value']; }; if(strtolower($vals[$i]['tag']) == 'item'){ if(($vals[$i]['type']=="open")&&($type==0)){$type=1;}; if($vals[$i]['type']=="close"){ $rss_items[]=$tmp; $tmp = array(); }; }; }; $ret[0] = $rss_channel; $ret[1] = $rss_items; return($ret); }; ?>