rss feed xml:将rss feed转换为xml对象后无法访问图像

时间:2012-07-23 06:28:59

标签: php xml image rss feed

http://feeds.feedburner.com/rb286中,有很多图片。但是,当我使用simplXmlElement将其转换为xml对象时,我无法看到图像。我的代码:

if (function_exists("curl_init")){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://feeds.feedburner.com/rb286");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$data=curl_exec($ch);
curl_close($ch);
//print_r($data);   //here i'm able to see the images
     $doc=new SimpleXmlElement($data);
     print_r($doc);   //here i'm not able to see the images
  }

有人可以告诉我如何在转换为xml对象后访问图像?谢谢。

1 个答案:

答案 0 :(得分:2)

您必须通过<content:encoded>主标记中的个人<items>的{​​{1}}代码进行迭代。我会使用xpath方法来选择标签。获得所需的元素后,您可以使用preg_match_all之类的字符串操作工具向其中<channel>进行grep:

修改 添加了更精确的图片代码匹配,从而排除了来自Feedburner和其他广告的广告。

<img>

$xml = simplexml_load_string(file_get_contents("http://feeds.feedburner.com/rb286")); foreach ($xml->xpath('//item/content:encoded') as $desc) { preg_match_all('!(?<imgs><img.+?src=[\'"].*?http://feeds.feedburner.com.+?[\'"].+?>)!m', $desc, $> foreach ($m['imgs'] as $img) { print $img; } } 标记是命名空间,所以如果你想使用simplexml的内置属性映射,你必须像这样处理它:

<content:encoded>

您可以从xpath查询语言here中了解更多信息。