2014-11-01 39 views
0

收集从RSS全部信息,我需要使用PHP如何使用PHP

标题,链接/ URL,描述和图像显示从RSS订阅等信息

我已经做到了这一点下面的代码,但我无法从进料提取图片

我查了很多网站,但仍然还是未能解决这个问题

<?php 

$ch = curl_init("http://economico.sapo.pt/rss/ultimas"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

$data = curl_exec($ch); 
curl_close($ch); 

$doc = new SimpleXmlElement($data); 
//print_r($doc); 

if(isset($doc->channel)) 
{ 
    parseRSS($doc); 
} 
if(isset($doc->entry)) 
{ 
    parseAtom($doc); 
} 

function parseRSS($xml) 
{ 


    // echo "<strong>".$xml->channel->title."</strong>"; 
    $cnt = count($xml->channel->item); 
    for($i=0; $i<$cnt; $i++) 
    { 
    $postdate = $xml->channel->item[$i]->pubDate; 
    //pubDate 



    $url = $xml->channel->item[$i]->link; 
    $title = $xml->channel->item[$i]->title; 
    $desc = $xml->channel->item[$i]->description; 

    echo $postdate."<br/>".'<a href="'.$url.'">'.$title.'</a><br/>'.$desc.'<br/>'; 

    } 
} 

function parseAtom($xml) 
{ 
    echo "<strong>".$xml->author->name."</strong>"; 
    $cnt = count($xml->entry); 
    for($i=0; $i<$cnt; $i++) 
    { 
    $urlAtt = $xml->entry->link[$i]->attributes(); 
    $url = $urlAtt['href']; 
    $title = $xml->entry->title; 
    $desc = strip_tags($xml->entry->content); 

    echo '<a href="'.$url.'">'.$title.'</a>'.$desc.''; 
    } 
} 


?> 

回答

1

你已经在使用->attributes()这个正确的轨道,关于命名空间的人,只需使用->children()。简单的例子:

$url = 'http://economico.sapo.pt/rss/ultimas'; 
$rss = simplexml_load_file($url, null, LIBXML_NOCDATA); 

foreach($rss->channel->item as $item) { 
    $title = (string) $item->title; 
    $link = (string) $item->link; 
    $description = (string) $item->description; 
    $pubDate = (string) $item->pubDate; 

    $media_image_url = ''; 
    $media_title = ''; 
    $media = $item->children('media', 'http://search.yahoo.com/mrss/'); 
    if(isset($media->content)) { 
     $media_image_url = (string) $media->content->attributes()->url; 
     $media_title = (string) $media->content->title; 
    } 

    echo " 
     Title: $title <br/> 
     Link: $link <br/> 
     Description: $description <br/> 
     Pub Date: $pubDate <br/> 
     Image URL: $media_image_url <br/> 
     Media Title: $media_title <br/> 
     <hr/> 
    "; 
} 

Sample Output

+0

谢谢你的帮助,你的例子是为我工作,现在我要修改我的script.thank你 – user3040570 2014-11-01 09:53:09

+0

@ user3040570高兴帮 – Ghost 2014-11-01 10:00:09

+0

你帮我找到今天添加到rss的帖子? – user3040570 2014-11-01 11:21:46