If sætning i rss-parser
Hej eksperter,Jeg er lige begyndt at lege med RSS og finder det egentlig ganske interessant. Nu vil jeg så prøve at figurere et fundet script en anelse, for at se hvad man kan gøre med alle disse feeds.
Som eksempel tager vi lige BT's sport-feed: http://www.bt.dk/rss/sport.xml
I "endElement" har jeg sat en if-sætning ind, men den fungerer ikke rigtigt. Meningen er, at man kun skal se "description" såfremt url'en (variablen $link) starter med "http://www.bt.dk/sport/intfodbold/", men det virker som sagt ikke. Det hele vises, som om det går unde "else"..
Sådan ser if-sætningen ud:
if ($link == 'http://www.bt.dk/sport/intfodbold/%') {
Virker % ikke som jokertegn? Eller er variablen ganske enkelt ikke defineret endnu?
Her er resten af koden:
<html>
<head>
<title> Current SitePoint Articles </title>
</head>
<body>
<h2>Currently on SitePoint.com...</h2>
<dl>
<?php
$insideitem = false;
$tag = "";
$title = "";
$description = "";
$link = "";
function startElement($parser, $name, $attrs) {
global $insideitem, $tag, $title, $description, $link;
if ($insideitem) {
$tag = $name;
} elseif ($name == "ITEM") {
$insideitem = true;
}
}
function endElement($parser, $name) {
global $insideitem, $tag, $title, $description, $link;
if ($name == "ITEM") {
if ($link == 'http://www.bt.dk/sport/intfodbold/') {
printf("<dt><b><a href='%s'>%s</a></b></dt>",
trim($link),htmlspecialchars(trim($title)));
printf("<dd>%s</dd>",htmlspecialchars(trim($description)));
} else {
printf("<dt><b><a href='%s'>%s</a></b></dt>",
trim($link),htmlspecialchars(trim($title)));
}
$title = "";
$description = "";
$link = "";
$insideitem = false;
}
}
function characterData($parser, $data) {
global $insideitem, $tag, $title, $description, $link;
if ($insideitem) {
switch ($tag) {
case "TITLE":
$title .= $data;
break;
case "DESCRIPTION":
$description .= $data;
break;
case "LINK":
$link .= $data;
break;
}
}
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$fp = fopen("http://www.bt.dk/rss/sport.xml","r")
or die("Error reading RSS data.");
while ($data = fread($fp, 4096))
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($xml_parser);
?>
</dl>
</body>
</html>
MVH Weeelo
