Guten Tag!
Sonntag
05.02.2012
Home
Aktuelles
Wer bin ich?
Lebenslauf
Fertigkeiten
Fotos
DVDs
Gästebuch
WeBlog
Tools
Tipps & Tricks
Links
Suche
Version: 4.4
@ 01.04.2009
Seiten-Layout
Druckversion
History
Impressum
Datenschutz


|
|
PHP-Tools : rdf-news.func.php
<?php
/* Aufruf: (wahlweise) rdf_news('http://www.heise.de/newsticker/heise.rdf'); rdf_news('http://www.heise.de/mobil/newsticker/heise.rdf'); rdf_news('http://www.heise.de/security/news/news.rdf'); History: 1.0 - 09.09.2003: Erster Versuch :-) 1.1 - 10.09.2003: Channelinfo auch für rdf v2.0 angepasst 1.2 - 11.09.2003: Description auch für ITEM hinzugefügt 1.3 - 23.10.2003: Lesefehler der Datei wird abgefangen 1.5 - 04.11.2003: Code optimiert 1.8 - 08.03.2004: Caching (default Refreshtime = 15 Min) 1.9 - 09.03.2004: Kleine Designänderungen... 1.91- 02.05.2005: Änderung im Cache-File-Namen erstellen. 1.92- 01.06.2005: UTF-8 wird erkannt und ausgewertet. 1.93- 01.07.2006: Listenabstand vergrößert <li></li> */
function rdf_news($in_file, $refresh = 15){
// Fehlermeldung unterdrücken error_reporting(0);
$pgm_version = "v1.93"; $pgm_autor = "Alexander Palm"; $pgm_date = "01.07.2006";
// Cachenötigkeit ermitteln und ausführen wenn nötig :-) $cachedir = "cache"; $timestamp = time(); $cache_age = 0; if (!is_dir($cachedir)) mkdir($cachedir, 0755); $in_file_url = parse_url ($in_file); unset ($in_file_url['scheme'], $in_file_url['port'], $in_file_url['user'], $in_file_url['pass']); $cachefile = ""; foreach ($in_file_url as $in_file_piece){ $cachefile .= str_replace(array(".", "/", "=", "&"), "_", $in_file_piece); } $cachefile .= ".rdf"; $cachefile = $cachedir . "/" . $cachefile;
if (is_file($cachefile)){ //existiert die Cache-Datei? $cache_date = filemtime($cachefile); // TimeStamp vom File $cache_age = sprintf("%u", ($timestamp - $cache_date) / 60); $cache_date = date("d.m.Y / H:i:s", $cache_date); // TimeStamp in Datums-String umwandeln if ($cache_age >= $refresh){ // ist sie älter als gewünscht? $use_cache = false; $warn_open = "<font color=\"red\">"; $warn_close = "</font>"; } else { $use_cache = true; // wenn nicht zu alt dann Cachefile lesen $warn_open = $warn_close = ""; } } else { $use_cache = false; // Cache-Datei existiert nicht } if (!$use_cache){ $in_file = file($in_file); if ($in_file){ // wenn Remote-Datei nicht lesbar dann doch Cache versuchen. $fhd = fopen($cachefile, 'w'); // Datei neu (CacheFile) schreiben wenn sie lesbar war. foreach ($in_file as $lineout){ fputs($fhd, $lineout); } fclose ($fhd); clearstatcache(); // Datei-Status-Cache löschen $cache_date = filemtime($cachefile); // TimeStamp vom File $cache_age = sprintf("%u", ($timestamp - $cache_date) / 60); $cache_date = date("d.m.Y / H:i:s", $cache_date); // TimeStamp in Datums-String umwandeln $warn_open = $warn_close = ""; } }
// XML-Parsing
$in_file = file($cachefile) or die ("<h3><font color=\"red\">Cache-Datei konnte nicht gelesen werden!</font></h3>"); $in_file = implode("", $in_file); // Datei komplett in eine Variable einlesen
$encoding = (preg_match('/encoding.?=.?"UTF-8"/i', $in_file)) ? "UTF-8" : "ISO-8859-1"; $xml_parse = xml_parser_create($encoding); xml_parser_set_option($xml_parse, XML_OPTION_TARGET_ENCODING, "ISO-8859-1"); xml_parse_into_struct($xml_parse, $in_file, $values, $tags); xml_parser_free($xml_parse);
// Ausgabe echo "<ul>\n"; foreach($tags as $key => $tag){
if ($key == "CHANNEL"){ for ($i=$tag[0]; $i <= $tag[count($tag)-1];$i++){ if ($values[$i]['tag']=="TITLE" && $values[$i]['level']==3) $title = $values[$i]['value']; if ($values[$i]['tag']=="LINK" && $values[$i]['level']==3) $news_link = $values[$i]['value']; if ($values[$i]['tag']=="DESCRIPTION" && $values[$i]['level']==3) $description = $values[$i]['value'];
if ($values[$i]['tag']=="CHANNEL" && $values[$i]['type']=="close"){ echo "<h2>".$title.", <font size=\"-3\">". "<a href=\"http://alexander-palm.de/tools/rdf-newss.func.php\">RDF-News-Reader</a>". " by $pgm_autor, $pgm_version ($pgm_date)</font><br>\n<font size=\"-1\">$description<br>\n"; echo "${warn_open}vom $cache_date, seit $cache_age Minute(n)$warn_close / Refresh alle $refresh Minuten</font></h2>\n"; } } }
if ($key == "ITEM"){ for ($i = $tag[0];$i <= $tag[count($tag)-1];$i++){ if ($values[$i]['tag']=="TITLE" && $values[$i]['type']=="complete") $title = $values[$i]['value']; if ($values[$i]['tag']=="LINK" && $values[$i]['type']=="complete") $link = $values[$i]['value']; if ($values[$i]['tag']=="DESCRIPTION" && $values[$i]['type']=="complete") $description = $values[$i]['value']; if ($values[$i]['tag']=="ITEM" && $values[$i]['type']=="close"){ echo "<li style='margin-bottom:1em'><a href=\"".$link."\" target=\"_blank\">".$title."</a>"; // Wenn description gesetzt dann ausgeben. if (isset ($description)) echo "<br><font size=\"-1\">$description</font>"; echo "</li>\n"; } } }
unset($title); unset($link); unset($description);
} echo "</ul>\n"; echo "<font size=\"+1\"><a href=\"".$news_link."\" target=\"_blank\">mehr...</a></font><br>\n"; }
?>
|
|