$str="<php>1<p>02</p></php><php><b>234</b></php>";
$pattern = "#(?<=<php>)(.*?)(?=</php>)#i";
preg_match($pattern,$str,$matches);
var_dump($matches);
结果:
array (size=2)
0 => string '1<p>02</p>' (length=10)
1 => string '1<p>02</p>' (length=10)
为什么没全部匹配出来
将表达式修改一下试试,新表达式如下:
$pattern = "#(?<=<php>)(.*)(?=</php>)#i";
===
* 重复任意次,但尽可能多重复
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
$pattern = "#(?<=<php>)(.*)(?=</php>)#i";
===
* 重复任意次,但尽可能多重复
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
温馨提示:答案为网友推荐,仅供参考