使用PHP从包含<! - [CDATA []] - >的rss中提取数据

时间:2012-12-20 11:48:53

标签: php xml rss cdata

这是我从rss feed获得的描述项目:

        <description><![CDATA[ <img src="http://images.24ur.com/media/images/210/Nov2012/61090877.jpg" alt="24ur.com"/>
        Na sedeĹžu Evropske nogometne zveze v Nyonu so izĹžrebali pare osmine finala Lige prvakov. BrĹžkone bo najbolj vroÄe v Madridu, kjer se bo zasedba Reala uvodoma udarila z Manchester Unitedom, povratni dvoboj pa bosta velikana evropskega nogometa odigrala v Manchestru.]]></description>

它包含此CDATA标记,无法使用xml解析器进行解析。如果我

echo $test->description;

我在浏览器中看到了img,但我无法访问脚本中的src。知道该怎么做吗?

2 个答案:

答案 0 :(得分:1)

您无法以XML格式访问CDATA部分中的XML 您需要使用正则表达式对其进行解析以获取src 或者将其作为另一个XML打开。

经测试&amp;工作原理:

$h = '<img src="http://images.24ur.com/media/images/210/Nov2012/61090877.jpg" alt="24ur.com"/>';

preg_match("/http:\/\/(.*?)[^\"']+/", $h, $matches);
var_dump($matches[0]);

输出:

string(60) "http://images.24ur.com/media/images/210/Nov2012/61090877.jpg" 

答案 1 :(得分:1)

描述包含单个文本节点(其数据是一段HTML)。它不包含任何XML元素。

如果要从HTML中提取数据,则需要先通过HTML解析器传递文本节点的数据。