我正在用Magpie从RSS feed中获取数据
$rss[description]
包含带有html元素的CDATA:
<![CDATA[
<div>
<a href='url'>
<img src='img_url' alt='aaa' title='bbb' border='0' width='116' height='116'>
</a>
</div>]]>
Some other text
如何从中获取“img_url
”? preg_match()
是唯一的方法吗?也许我可以使用simpleXML?
答案 0 :(得分:0)
CDATA
你有一个包含HTML的字符串。因此,首先将其视为文本,但由于此文本旨在包含HTML,因此使用适用于解析HTML的解决方案来解析此文本。
换句话说:为作业使用适当的工具(HTML解析器)(解析HTML)。
已经有用于在PHP中解析HTML的现有解决方案 - 例如。看到这个问题的答案:
因此,基本上,您已经能够从XML中获取HTML字符串。现在解析HTML并使用上面提到的一些解决方案获取图像源。
使用preg_match()
解析HTML并不是一个好主意,因为要完成HTML解析器适合的简单操作需要非常复杂。
答案 1 :(得分:0)
您最好不要使用可以使用适当工具的正则表达式。我想到的东西(尽管可能更容易):
$descr = $rss[description]; // String. You have extracted description part from your feed
$dom = new DOMDocument();
$dom->loadHTML($descr); // or you can use loadXML
if (!$dom) {
die('Error loading HTML string.');
}
$xml = simplexml_import_dom($dom);
$imgSrc = (string)$xml->body->div->a->img['src'];
我们走了。根据您的示例,CDATA $imgSrc
将等于img_url
。
答案 2 :(得分:-1)
是的,你应该使用正则表达式,CDATA意味着数据应该被视为普通的字符串而不用解析,所以你应该把它当作一个字符串...