tach,
also hier is der code
PHP
<?php
// #############################################################################
ShowFeed("http://www.chip.de/rss/rss_downloads.xml");
// #############################################################################
function ShowFeed($RssFeedFile) {
$XmlRoot = ParseXmlFile($RssFeedFile);
if ($XmlRoot) {
if (strtolower($XmlRoot->name) == "rss") {
ShowFeed_RSS($XmlRoot);
} else if (strtolower($XmlRoot->name) == "rdf:rdf") {
ShowFeed_RDF($XmlRoot);
} else if (strtolower($XmlRoot->name) == "smf:xml-feed") {
ShowFeed_SMFXMLFEED($XmlRoot, "http://www.your-smf-forum.tld/", "Forumstitel", "Your SMF...");
}
}
}
// #############################################################################
function ShowFeed_RSS($XmlRoot) {
$title = GetFirstChildContentByPath($XmlRoot, "channel/title");
$link = GetFirstChildContentByPath($XmlRoot, "channel/link");
$desc = GetFirstChildContentByPath($XmlRoot, "channel/description");
echo "<h2><a href=\"$link\">$title</a></h2>\n";
echo "
$desc</p>\n";
$nodelist = GetChildrenByPathAndName($XmlRoot, "channel", "item");
if (!$nodelist) return 0;
foreach ($nodelist as $nl) {
$title = GetFirstChildContentByName($nl, "title");
$link = GetFirstChildContentByName($nl, "link");
$desc = GetFirstChildContentByName($nl, "description");
$creator = GetFirstChildContentByName($nl, "author");
if (!$creator) $creator = GetFirstChildContentByName($nl, "dc:creator");
$pubdate = GetFirstChildContentByName($nl, "pubDate");
if (!$pubdate) $pubdate = GetFirstChildContentByName($nl, "dc:date");
if ($pubdate) $pubdate = strtotime($pubdate);
if ($pubdate) $pubdate = strftime("%d.%m.%Y %H:%M:%S", $pubdate);
$out = $creator;
if ( ($creator != "") && ($pubdate != "") ) $out .= " @ ";
$out .= $pubdate;
if ($out != "") $out = " [size=8]($out)[/size]";
echo "\n";
echo "
<a href=\"$link\"><h1>$title</h1></a>$out
[i]$desc[/i]</p>\n";
}
echo "
\n";
}
// #############################################################################
function ShowFeed_RDF($XmlRoot) {
$title = GetFirstChildContentByPath($XmlRoot, "channel/title");
$link = GetFirstChildContentByPath($XmlRoot, "channel/link");
$desc = GetFirstChildContentByPath($XmlRoot, "channel/description");
echo "<h2><a href=\"$link\">$title</a></h2>\n";
echo "
$desc</p>\n";
$nodelist = $XmlRoot->children;
if (!$nodelist) return 0;
foreach ($nodelist as $nl) {
$title = GetFirstChildContentByName($nl, "title");
$link = GetFirstChildContentByName($nl, "link");
$desc = GetFirstChildContentByName($nl, "description");
$creator = GetFirstChildContentByName($nl, "author");
$creator = GetFirstChildContentByName($nl, "dc:creator");
$pubdate = GetFirstChildContentByName($nl, "pubDate");
if (!$pubdate) $pubdate = GetFirstChildContentByName($nl, "dc:date");
if ($pubdate != "") $pubdate = strtotime($pubdate);
$pubdate = strftime("%d.%m.%Y", $pubdate);
$out = $creator;
if ( ($creator != "") && ($pubdate != "") ) $out .= " @ ";
$out .= $pubdate;
if ($out != "") $out = " [size=8]($out)[/size]";
echo "<hr>\n";
echo "
<a href=\"$link\">[b]$title[/b]</a>$out
<blockquote>[size=8]$desc[/size]</blockquote></p>\n";
}
echo "<hr>\n";
}
// #############################################################################
function ShowFeed_SMFXMLFEED($XmlRoot, $Link, $Title, $Desc) {
echo "<h2><a href=\"$Link\">$Title</a></h2>\n";
echo "
$Desc</p>\n";
$nodelist = $XmlRoot->children;
if (!$nodelist) return 0;
foreach ($nodelist as $nl) {
$title = GetFirstChildContentByName($nl, "subject");
$link = GetFirstChildContentByPath($nl, "link");
$desc = GetFirstChildContentByName($nl, "body");
$poster = GetFirstChildContentByPath($nl, "poster/name");
$posterlink = GetFirstChildContentByPath($nl, "poster/link");
if ( ($poster != "") && ($posterlink != "") ) $poster = "<a href=\"$posterlink\">$poster</a>";
$pubdate = GetFirstChildContentByName($nl, "time");
$out = $poster;
if ( ($poster != "") && ($pubdate != "") ) $out .= " @ ";
$out .= $pubdate;
if ($out != "") $out = " [size=8]($out)[/size]";
echo "<hr>\n";
echo "
<a href=\"$link\">[b]$title[/b]</a>$out
<blockquote>[size=8]$desc[/size]</blockquote></p>\n";
}
echo "<hr>\n";
}
// #############################################################################
function GetAttribByName($XmlNode, $sName, $bCase = False) {
if (!$bCase) $sName = strtolower($sName);
if (!$bCase) $aAttributes = array_change_key_case($XmlNode->attributes, CASE_LOWER);
return $aAttributes[$sName];
}
// #############################################################################
function GetChildrenByPathAndName($XmlRoot, $sPath, $sName, $bCase = False) {
$aPath = GetPath($sPath);
$oRes = array();
$oNode = $XmlRoot;
foreach ($aPath as $p) {
$oNode = GetFirstChildByName($oNode, $p);
if (!$oNode) return False;
}
foreach ($oNode->children as $c) {
if ($bCase) {
if (strcmp($c->name, $sName) == 0) $oRes[count($oRes)] = $c;
} else {
if (strcasecmp($c->name, $sName) == 0) $oRes[count($oRes)] = $c;
}
}
return $oRes;
}
// #############################################################################
function GetChildrenByPath($XmlRoot, $sPath, $bCase = False) {
$aPath = GetPath($sPath);
$oNode = $XmlRoot;
foreach ($aPath as $p) {
$oNode = GetFirstChildByName($oNode, $p, $bCase);
if (!$oNode) return False;
}
return $oNode->children;
}
// #############################################################################
function GetFirstChildContentByPath($XmlRoot, $sPath, $bCase = False) {
$oNode = GetFirstChildByPath($XmlRoot, $sPath, $bCase);
if ($oNode) return $oNode->content; else return "";
}
// #############################################################################
function GetFirstChildByPath($XmlRoot, $sPath, $bCase = False) {
$aPath = GetPath($sPath);
$oNode = $XmlRoot;
foreach ($aPath as $p) {
$oNode = GetFirstChildByName($oNode, $p, $bCase);
if (!$oNode) return False;
}
return $oNode;
}
// #############################################################################
function GetFirstChildContentByName($oParent, $sName, $bCase = False) {
$oNode = GetFirstChildByName($oParent, $sName, $bCase);
if ($oNode) return $oNode->content; else return "";
}
// #############################################################################
function GetFirstChildByName($oParent, $sName, $bCase = False) {
if (count($oParent->children) < 1) return 0;
if ($bCase) $sName = strtolower($sName);
foreach ($oParent->children as $c) {
if ($bCase) {
if (strcmp($c->name, $sName) == 0) return $c;
} else {
if (strcasecmp($c->name, $sName) == 0) return $c;
}
}
return False;
}
// #############################################################################
function GetPath($sPath, $iMax = 32) {
return split("/", $sPath, $iMax);
}
// #############################################################################
class XmlElement {
var $name;
var $attributes;
var $content;
var $children;
};
// #############################################################################
function ParseXmlFile($sFileName) {
$handle = @fopen($sFileName, "rb");
$xml = '';
if (!$handle) return False;
while (!feof($handle)) {
$xml .= fread($handle, 4096);
}
fclose($handle);
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "ISO-8859-1");
xml_parse_into_struct($parser, $xml, $tags);
xml_parser_free($parser);
$elements = array();
$stack = array();
foreach ($tags as $tag) {
$index = count($elements);
if ( ($tag['type'] == "complete") || ($tag['type'] == "open") ) {
$elements[$index] = new XmlElement;
if (isset($tag['tag'])) $elements[$index]->name = $tag['tag'];
if (isset($tag['attributes'])) $elements[$index]->attributes = $tag['attributes'];
if (isset($tag['value'])) $elements[$index]->content = $tag['value'];
if ($tag['type'] == "open") {
$elements[$index]->children = array();
$stack[count($stack)] = &$elements;
$elements = &$elements[$index]->children;
}
}
if ($tag['type'] == "close") {
$elements = &$stack[count($stack) - 1];
unset($stack[count($stack) - 1]);
}
}
return $elements[0];
}
// #############################################################################
?>
Alles anzeigen
wenn ich es über XAMPP bei localhost teste funktioniert es perfekt.
aber wenn ich es hochlade, auf meinen webspace. werden die formatierten "daten" nicht angezeigt!
ihr könnt ja selbst mal testen wie es ist .
falls jemand eine lösung für das problem hat, soll es hier reinschreiben.
mfg
ich-heisse-ich