Ребят, доброго времени суток!
Такая ситуация:
обшарил весь инет в поисках скрипта подходящего перевода rss в виде html. Нашел. Все отлично только вот одна проблемка, как сделать так, чтобы там еще выводилась картинка?
У самого не получается. По следующей причине:
все теги основные, я выдернул по аналогии. А вот как взять атрибут "url" из тега "enclosure", не знаю.
Помогите пожалуйста доработать.
вид моего rss потока такой (пример):
<item> <title>Правительством был одобрен законопроект, направленный на улучшение качества работы органов местного самоуправления</title> <link>http://gorod73.ru/news/politika/pravitelstvom-uljanovskojj-oblasti-byl-odobren-zakonoproekt-napravlennyjj-na-uluchshenie-kachestva-raboty-organov-mestnogo-samoupravlenija/</link> <description>Правительством Ульяновской области был одобрен законопроект, ориентированный на повышение качества работы в органах местного самоуправления. Также документ позволит усовершенствовать осуществляемую в регионе работу по ведению регистра нормативных правовых актов.</description> <yandex:full-text>Правительством Ульяновской области был одобрен законопроект, ориентированный на повышение качества работы в органах местного самоуправления. Также документ позволит усовершенствовать осуществляемую в регионе работу по ведению регистра нормативных правовых актов. Документ был разработан в целях повышения качества реализации переданных государственных полномочий органами местного самоуправления в муниципальных районах. В числе прочих поправок, он предполагает изменение методики вычисления размеров субвенций, которые предоставляются бюджетам муниципальных районов региона на исполнение ими переданных полномочий. Планируется, что предложенные законопроектом изменения в силу вступят 1 января 2011 года.</yandex:full-text> <pubDate>Wed, 20 Oct 2010 07:44:00 +0400</pubDate> <category>Политика</category> <enclosure url="http://gorod73.ru/upload/information_system_16/3/1/0/item_3109/information_items_3109.jpg" length="18663" type="image/jpeg" /> <guid>http://gorod73.ru/news/politika/pravitelstvom-uljanovskojj-oblasti-byl-odobren-zakonoproekt-napravlennyjj-na-uluchshenie-kachestva-raboty-organov-mestnogo-samoupravlenija/</guid> </item>
а вот текст подключаемого скрипта, который непосредственно все обрабатывает RssReader.class.php:
<? http://www.gregwiz.com
class RssReader{ var $xml_parser; var $rss_content; var $currentTag = ''; var $currentAttribs = ''; var $depth = 0; var $main; var $item_counter = 0; var $cache_dir = 'temp'; function Rss_Reader ($file) { $this->xml_parser = xml_parser_create(); xml_set_object($this->xml_parser, $this); xml_set_element_handler($this->xml_parser, startElement, endElement); xml_set_character_data_handler($this->xml_parser, characterData); if($this->cache_time > 0) { $usedcache = false; $cache_file = $this->cache_dir . '/rsscache_' . md5($file); if (file_exists($cache_file)) { $timedif = @(time() - filemtime($cache_file)); if ($timedif < $this->cache_time) { $file = $cache_file; $usedcache = true; } } } if (!($fp = fopen($file, "r"))) { die("could not open XML input"); } $read = ''; while ($data = fread($fp, 4096)) { if (!xml_parse($this->xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->xml_parser)), xml_get_current_line_number($this->xml_parser))); } $read .= $data; } xml_parser_free($this->xml_parser); if($this->cache_time > 0) { if (!$usedcache) { if (file_exists($cache_file)) { unlink($cache_file); } $f = @fopen($cache_file, 'w'); fwrite ($f, $read); fclose($f); } } echo '<UL>'; foreach ($this->rss_content[items] as $content) { print_r($content); } echo '</UL>'; } function startElement($parser, $name, $attrs) { $name = strtolower($name); switch($name) { case "rss": case "rdf:rdf": case "items": $this->currentTag = ""; break; case "channel": $this->main = "channel"; break; case "image": $this->main = "image"; $this->rss_content["image"] = array(); break; case "item": $this->main = "items"; break; default: $this->currentTag = $name; break; } } function endElement($parser, $name) { $name = strtolower($name); $this->currentTag = ""; if ($name == "item") { $this->item_counter++; } } function characterData($parser, $data) { if ($this->currentTag != "") { switch($this->main) { case "channel": if (isset($this->rss_content[$this->currentTag])) { $this->rss_content[$this->currentTag] .= $data; } else { $this->rss_content[$this->currentTag] = $data; } break; case "image": if (isset($this->rss_content[$this->main][$this->currentTag])) { $this->rss_content[$this->main][$this->currentTag] .= $data; } else { $this->rss_content[$this->main][$this->currentTag] = $data; } break; case "items": if (isset($this->rss_content[$this->main][$this->item_counter][$this->currentTag])) { $this->rss_content[$this->main][$this->item_counter][$this->currentTag] .= $data; } else { $this->rss_content[$this->main][$this->item_counter][$this->currentTag] = $data; } break; } } } } ?>
|