alex-bot
Nulled-Man
- Регистрация
- 4 Май 2007
- Сообщения
- 496
- Реакции
- 161
- Автор темы
- #1
В общем имеем такую ленту:
И имеем вот такой старенький парсер под ПХП 4
Можете подсказать как в него дописать возможность парсить урл
<enclosure url="http://newsland.ru/public/upload/news/575217.jpg"
Сам как не пробовал не выходит..., да и примера толком нормального не нашел или под ПХП5 видно... С этим вроде разобрался так нормально парсит...
Код:
<item>
<title>Уголовные наказания в России станут мягче</title>
<link>http://newsland.ru/News/Detail/id/575217/</link>
<description><![CDATA[<p>По новому законопроекту, применять...</p><img border="0" src="http://newsland.ru/public/upload/news/575217.jpg" width="100" alt="">]]></description>
<author>МУСТАФА</author>
<guid>http://newsland.ru/News/Detail/id/575217/</guid>
<pubDate>Thu, 21 Oct 2010 16:24:02 +0400</pubDate>
<enclosure url="http://newsland.ru/public/upload/news/575217.jpg" length="" type="image/jpeg" />
</item>
PHP:
<?php
$itemNum=0;
class RSSParser {
var $channel_title="";
var $channel_website="";
var $channel_description="";
var $channel_pubDate="";
var $channel_lastUpdated="";
var $channel_copyright="";
var $title="";
var $link="";
var $description="";
var $pubDate="";
var $author="";
var $url="";
var $width="";
var $height="";
var $inside_tag=false;
function RSSParser($file,$encType) {
$this->xml_parser = xml_parser_create($encType);
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" );
$fp = @fopen("$file","r") or die( "$file could not be opened" );
while ($data = fread($fp, 4096)){xml_parse( $this->xml_parser, $data, feof($fp)) or die( "XML error");}
fclose($fp);
xml_parser_free( $this->xml_parser );
}
function startElement($parser,$tag,$attributes=''){
$this->current_tag=$tag;
if($this->current_tag=="ITEM" || $this->current_tag=="IMAGE"){
$this->inside_tag=true;
$this->description="";
$this->link="";
$this->title="";
$this->pubDate="";
}
}
function endElement($parser, $tag){
switch($tag){
case "ITEM":
$this->titles[]=trim($this->title);
$this->links[]=trim($this->link);
$this->descriptions[]=trim($this->description);
$this->pubDates[]=trim($this->pubDate);
$this->authors[]=trim($this->author);
$this->author=""; $this->inside_tag=false;
break;
case "IMAGE":
$this->channel_image="<img src=\"".trim($this->url)."\" width=\"".trim($this->width)."\" height=\"".trim($this->height)."\" alt=\"".trim($this->title)."\" border=\"0\" title=\"".trim($this->title)."\" />";
$this->title=""; $this->inside_tag=false;
default:
break;
}
}
function characterData($parser,$data){
if($this->inside_tag){
switch($this->current_tag){
case "TITLE":
$this->title.=$data; break;
case "DESCRIPTION":
$this->description.=$data; break;
case "LINK":
$this->link.=$data; break;
case "URL":
$this->url.=$data; break;
case "WIDTH":
$this->width.=$data; break;
case "HEIGHT":
$this->height.=$data; break;
case "PUBDATE":
$this->pubDate.=$data; break;
case "AUTHOR":
$this->author.=$data; break;
default: break;
}//end switch
}else{
switch($this->current_tag){
case "DESCRIPTION":
$this->channel_description.=$data; break;
case "TITLE":
$this->channel_title.=$data; break;
case "LINK":
$this->channel_website.=$data; break;
case "COPYRIGHT":
$this->channel_copyright.=$data; break;
case "PUBDATE":
$this->channel_pubDate.=$data; break;
case "LASTBUILDDATE":
$this->channel_lastUpdated.=$data; break;
default:
break;
}
}
}
}
$forex1 = new RSSParser("http://www.newsland.ru/rss/getnews/ord/1/cat/0","utf-8");
?>
<table width="100%" border="0" class="tab">
<?php
$forex1_RSSmax=50;
if($forex1_RSSmax==0 || $forex1_RSSmax>count($forex1->titles))$forex1_RSSmax=count($forex1->titles);
for($itemNum=0;$itemNum<$forex1_RSSmax;$itemNum++) {?><tr>
<td align="left" bgcolor="" ><b style="font-size:12px"><?php
$title=$forex1->titles[$itemNum];
echo iconv("UTF-8","windows-1251", $title )
?></b></td>
</tr>
<tr>
<td align="left" ><?php
$descr=$forex1->descriptions[$itemNum];
echo iconv("UTF-8","windows-1251", $descr )
?>
<div class="file"><noindex><a href=" <?php echo $forex1->links[$itemNum]; ?> "target="_blank" <?php echo $forex1->links[$itemNum]; ?>" rel=nofollow>Читать целиком</a><br><br></noindex></div></td>
</tr>
<?php } ?>
</table>
<enclosure url="http://newsland.ru/public/upload/news/575217.jpg"
Сам как не пробовал не выходит..., да и примера толком нормального не нашел или под ПХП5 видно... С этим вроде разобрался так нормально парсит...