GixerJas Posted January 9, 2007 Share Posted January 9, 2007 Hi,I'm a bit of a noobie at php and I'm looking for a simple solution to separate out the values from a single rss description. The feed that I'm trying to breakdown is the BBC weather feed,[url=http://www.bbc.co.uk/weather/5day.shtml?id=3737.xml]http://www.bbc.co.uk/weather/5day.shtml?id=3737.xml[/url][color=blue]<description>The forecast for Marazion (TR17), United Kingdom on Tuesday: light rain. Max Temp: 14°C (57°F), Min Temp: 10°C (50°F), Wind Direction: SW, Wind Speed: 33mph, Visibility: good, Pressure: 1004mb, Humidity: 83%, UV risk: low, Pollution: low, Sunrise: 08:19GMT, Sunset: 16:36GMT</description>[/color]I'm trying to separate the elements of the description tag so that I can display them individually i.e. Max Temp: 10[sup]o[/sup]C. It looks, to me, like it could be broken into an array, and the individual parts asigned to $trings but I'm not sure where to start.The php rss reader script that I'm using is[color=blue]<?phpset_time_limit(0);$file = "http://feeds.bbc.co.uk/weather/feeds/rss/5day/id/3737.xml";$rss_channel = array();$currently_writing = "";$main = "";$item_counter = 0;function startElement($parser, $name, $attrs) { global $rss_channel, $currently_writing, $main; switch($name) { case "RSS": case "RDF:RDF": case "ITEMS": $currently_writing = ""; break; case "CHANNEL": $main = "CHANNEL"; break; case "IMAGE": $main = "IMAGE"; $rss_channel["IMAGE"] = array(); break; case "ITEM": $main = "ITEMS"; break; default: $currently_writing = $name; break; }}function endElement($parser, $name) { global $rss_channel, $currently_writing, $item_counter; $currently_writing = ""; if ($name == "ITEM") { $item_counter++; }}function characterData($parser, $data) { global $rss_channel, $currently_writing, $main, $item_counter; if ($currently_writing != "") { switch($main) { case "CHANNEL": if (isset($rss_channel[$currently_writing])) { $rss_channel[$currently_writing] .= $data; } else { $rss_channel[$currently_writing] = $data; } break; case "IMAGE": if (isset($rss_channel[$main][$currently_writing])) { $rss_channel[$main][$currently_writing] .= $data; } else { $rss_channel[$main][$currently_writing] = $data; } break; case "ITEMS": if (isset($rss_channel[$main][$item_counter][$currently_writing])) { $rss_channel[$main][$item_counter][$currently_writing] .= $data; } else { print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>"); $rss_channel[$main][$item_counter][$currently_writing] = $data; } break; } }}$xml_parser = xml_parser_create();xml_set_element_handler($xml_parser, "startElement", "endElement");xml_set_character_data_handler($xml_parser, "characterData");if (!($fp = fopen($file, "r"))) { die("could not open XML input");}while ($data = fread($fp, 4096)) { if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); }}xml_parser_free($xml_parser);// output as HTMLprint ("<html><head><title>PHP RSS Reader</title></head><body>");if (isset($rss_channel["IMAGE"])) { print ("<a href=\"" . $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" . $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" . $rss_channel["IMAGE"]["TITLE"] . "\"></a> <font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>");} else { print ("<font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>");}print ("<i>" . $rss_channel["DESCRIPTION"] . "</i><br><br>");if (isset($rss_channel["ITEMS"])) { if (count($rss_channel["ITEMS"]) > 0) { for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) { print ("\n<table width=\"100%\" border=\"1\"><tr><td width=\"100%\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\"><h2>" . $rss_channel["ITEMS"][$i]["TITLE"] . "</h2></a></b>"); print ("<i>" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</i>"); print ("</td></tr></table><br>"); } } else { print ("<b>There are no articles in this feed.</b>"); }}print ("</body></html>");?>[/color]Any help or a nudge in the right direction would be much appreciated. Link to comment https://forums.phpfreaks.com/topic/33489-create-an-array-from-an-rss-description/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.