Ребят, доброго времени суток!
Такая ситуация:
обшарил весь инет в поисках скрипта подходящего перевода 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;
}
}
}
}
?>