Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将正则表达式与XML结合使用_Php_Regex_Cdata - Fatal编程技术网

Php 将正则表达式与XML结合使用

Php 将正则表达式与XML结合使用,php,regex,cdata,Php,Regex,Cdata,我尝试使用正则表达式从以下XML提要提取CDATA: 我的代码如下: $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>'; 我知道我的正则表达式不太正确,但当我

我尝试使用正则表达式从以下XML提要提取CDATA:

我的代码如下:

$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>';
我知道我的正则表达式不太正确,但当我尝试以下语句时:

<!\[(CDATA)\[\s*(.*?)\s*\]\]>
preg_匹配('/(

感谢您的帮助,我已经尝试了几个小时了,但运气不佳。

错误消息的原因是它缺少字符类的结束符
]
。但是您不想用您的
[
定义字符类。您想匹配它,所以必须将其转义为
\[


我在这里测试了它


*?
是一个非贪婪匹配,它匹配的越少越好,直到找到结束的
]]> />代码> 

你考虑过XML解析器吗?是的,我使用SimeXMLMeta来解析文件的其余部分,它工作得很好。它不会给我带来任何问题。但是我不能用SimeXMLMeta元素来获取CDATA部分中的细节。如果你看到XML文件,实际的星象细节就在节点下面。当我引用这个节点时,它就把所有的D都集中起来了。ata in together.stema,谢谢。只有一个问题,我设法将第一个CDATA值放入数组中。但正如您从XML中看到的,还有许多其他CDATA段。我如何管理它们?@Stephen,我对php不太了解,但有一个函数
preg\u match\u all
,请尝试使用它而不是
preg\u match
。根据它,你应该做你想做的事。
preg_match('/(<![CDATA[)(.*)/', $xml, $arr);
<!\[(CDATA)\[\s*(.*?)\s*\]\]>