如何从RSS中的description元素获取图像路径

时间:2014-12-27 08:54:21

标签: php xml rss

Hello Sir我正在尝试从amazon RSS提要中获取图像路径,但描述标记中有3个不同的图像...我正在使用DOMDocument方法从RSS提要中获取数据...当我尝试获取它获取完整描述的图像路径(所有3个图像路径合二为一),但我只需要第一个主图像路径在我的RSS提要滑块中显示它...需要帮助严重...项目提交的最后日期... < / p>

亚马逊RSS Feed - http://www.amazon.co.uk/gp/rss/bestsellers/electronics/560834/ref=zg_bs_560834_rsslink

以下是检查图像是否正常的测试代码

error_reporting(0);
$rss = new DOMDocument();
$rss->load('http://www.amazon.co.uk/gp/rss/bestsellers/electronics/560834/ref=zg_bs_560834_rsslink');
  $feed = array();
        foreach ($rss->getElementsByTagName('item') as $node) {
        $item = array ( 
         'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
         'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
         'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
         'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
          'img' => $node->getElementsByTagName('description')->item(1)->getAttribute('src')
         );
        array_push($feed, $item);
        }   
        $limit = 10;        
    for($x=0;$x<$limit;$x++) {
        $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
        $link = $feed[$x]['link'];
        $description = $feed[$x]['desc'];
        $img = $feed[$x]['img'];    
        $date = date('l F d, Y', strtotime($feed[$x]['date'])); 

    echo $img;
    echo "<hr/>";
    }

1 个答案:

答案 0 :(得分:0)

此行假设图像是说明中的第2项。当您正在阅读其他RSS Feed数据时,它很可能会发生变化。

$node->getElementsByTagName('description')->item(1)->getAttribute('src')

不仅如此,描述通常保存在CDATA块中,这意味着,就您使用的XML解析器而言,其中的HTML是一长串文本。

您真正想要的是获取描述文本,将其解析为HTML,然后获取所有img标记(很可能获得第一个。)确保您的代码在描述中没有img标记的情况下工作。