我正在尝试使用正则表达式从以下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);
我收到一个错误:
警告:对于偏移量为15的字符类,preg_match()[function.preg-match]:编译失败:缺少终止]
我认为这可能会在方括号'['之后给我详细信息,这正是我正在寻找的。
任何帮助表示感谢,我已经尝试了几个小时,没有运气。
错误消息的原因是它缺少关闭字符类的]
。但你不想用你想要匹配它的[
定义一个角色类,所以你需要逃脱它\[
。
<!\[(CDATA)\[\s*(.*?)\s*\]\]>
我在regexr上测试了它
.*?
是一个非贪婪的比赛,它尽可能地匹配,直到它找到结束的]]>
。