我在做什么错误preg_match_all?
问题描述:
目标是找到诸如<!-- content:start -->some content here<!-- content:stop -->
这样的集合并处理每个集合以将其放入数组中,但每次找到没有匹配和回声时我的die语句不打印任何匹配。 注意:开始和结束标记之间的内容通常跨越多行。我在做什么错误preg_match_all?
这是当前正在执行的函数。
function boom($data) {
$number = preg_match_all("/(<!-- ([\w]+):start -->)(.*?)(<!-- \\2:stop -->)/", $data, $matches, PREG_SET_ORDER);
if ($number == 0) $data['content'] = $data;
//else unset($data);
foreach ($matches as $item) print_r($item)."\n\n"; // $data[$item[2]] = explode("<!-- breaker -->", $item[3]);
die("<code>".str_replace("\n", "<br />", htmlentities($data))."</code>");
return $data;
}
答
如果您的文本继续多行,只是/s
改性剂添加到您的模式(使.
匹配换行符)。
不是整个部分'()'认为第一个匹配和第二个匹配的内部([\ w] +) ? – animuson 2010-02-07 08:36:54
添加了正确的模式 – 2010-02-07 08:39:57
嗯,一封信使所有区别,谢谢! – animuson 2010-02-07 08:47:06