【发布时间】:2011-08-14 04:48:40
【问题描述】:
我正在尝试使用正则表达式从以下 XML 提要中提取 CDATA:http://www.patrickarundell.net/THREE-IE-FEED.asp
我的代码如下:
$xml = file_get_contents('http://www.patrickarundell.net/THREE-IE-FEED.asp');
$arr = array();
preg_match('/(CDATA)(.*)/', $xml, $arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
输出是:
Array
(
[0] => CDATA[
[1] => CDATA
[2] => [
)
我知道我的正则表达式不太正确,但是当我尝试以下语句时:
preg_match('/(<![CDATA[)(.*)/', $xml, $arr);
我收到一个错误:
警告:preg_match() [function.preg-match]:编译失败:偏移 15 处的字符类缺少终止]
我认为这可能会在方括号“[”之后为我提供详细信息,这就是我正在寻找的内容。
感谢您的帮助,我已经尝试了几个小时但没有运气。
【问题讨论】:
-
你考虑过 XML 解析器吗?
-
是的,我正在使用 SimpleXMLElement 来解析文件的其余部分,并且效果很好。它没有给我任何问题。但我无法使用 SimpleXMLElement 获取 CDATA 部分的详细信息。如果您看到 XML 文件,则实际星座详细信息位于
节点下。当我引用这个节点时,它会将所有数据集中在一起。