Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estive procurando bastante um rss parser em php, achei um excelente PHP RSS Reader v1.1. Ele é bem simples mas pode ser personalizado e é bastante eficiente.
Não tenho conhecimentos em php apenas adapto os scripts ao meu layout, por isso me deparei com um problema, ele nao tem limitador de ítens(feeds). eu tentei algumas gambiarras mas não consegui.
Agradeço muito a quem puder me dar uma dica!
[]'s
<?php/* PHP RSS Reader v1.1 By Richard James Kendall Bugs to richard@richardjameskendall.com Free to use, please acknowledge me Place the URL of an RSS feed in the $file variable. The $rss_channel array will be filled with data from the feed, every RSS feed is different by by and large it should contain: Array { [TITLE] = feed title [DESCRIPTION] = feed description [LINK] = link to their website [IMAGE] = Array { [URL] = url of image [DESCRIPTION] = alt text of image } [ITEMS] = Array { [0] = Array { [TITLE] = item title [DESCRIPTION] = item description [LINK = a link to the story } . . . } } */set_time_limit(0);$file = ""; //AQUI A URL DO FEED$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>Palavra Viva</title></head><body>");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=\"0\" cellspacing=\"0\" cellpadding=\"5\"> <tr> <td width=\"4%\"><img src=\"images/file.gif\" width=\"13\" height=\"16\"></td> <td width=\"96%\"><span class=\"titulo\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</a></span><br>"); print ("<span class=\"style3\">" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</span>"); print ("</td></tr></table>"); }} else { print ("<b>Não há artigos</b>");}}print ("</body></html>");?>Carregando comentários...