spikre
peterhamre.no
Jeg har problemer med å hente ut bilde-elementet (tag: enclosure) fra RSS-feeds. Noen som kan hjelpe meg med å hente ut $bilde? (Jeg regner med det skal legges til en ny "case" i funksjonen characterData, men jeg finner ikke ut hva.)
Eksempelfeed som er brukt under: http://www.nrk.no/nyheter/siste.rss:
Koden jeg bruker ligger under:
Eksempelfeed som er brukt under: http://www.nrk.no/nyheter/siste.rss:
HTML:
<enclosure url="http://www.nrk.no/contentfile/imagecrop/1.8253662?cropid=f169w225" type="image/jpeg"/>
Koden jeg bruker ligger under:
PHP:
<?php
$insideitem = false;
$tag = "";
$title = "";
$description = "";
$link = "";
$dato = "";
$bilde = "";
$antallelementer = 0;
function startElement($parser, $name, $attrs) {
global $insideitem, $tag, $title, $description, $link, $dato, $bilde;
if ($insideitem) {
$tag = $name;
} elseif ($name == "ITEM") {
$insideitem = true;
}
}
function endElement($parser, $name) {
global $insideitem, $tag, $title, $description, $link, $dato, $bilde, $antallelementer;
if ($name == "ITEM") {
$antallelementer++;
if ($antallelementer <= 3) {
printf("<b><a href='%s' target='_blank'>%s</a></b><br />", trim($link),htmlspecialchars(trim($title)));
printf("<img src='" . $item->enclosure['url'] . "' height='30px' align='right' \>");
printf("<span style='font-size: 10px'>");
printf("<b>KILDE</b> NRK Nyheter<br /> ");
printf("<b>DATO</b> ". strftime('%H:%M ', strtotime($dato)) ."<br />");
printf("<i>");
printf(htmlspecialchars(trim($description)));
printf($bilde . "</i></span><hr>");
$title = "";
$description = "";
$link = "";
$dato = "";
$bilde = "";
$insideitem = false;
}
}
}
function characterData($parser, $data) {
global $insideitem, $tag, $title, $description, $link, $dato, $bilde;
if ($insideitem) {
switch ($tag) {
case "TITLE":
$title .= $data;
break;
case "DESCRIPTION":
$description .= $data;
break;
case "LINK":
$link .= $data;
break;
case "PUBDATE":
$dato .= $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.nrk.no/nyheter/siste.rss","r") or die("Klarer ikke lese feed");
while ($data = fread($fp, 4096))
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML feil: %s (linje %d)",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($xml_parser);
?>