PHP正则使用起来还是非常方便的,尤其是对需要抓取网页数据来处理的人来说,
对html数据,因为html结构的随意性非常大,因此有许多标签嵌套,
分享一个用PHP递归匹配HTML中同一层下的div标签及其内容的正则,可以按照实际情况修改匹配标签;
<?php
$data =<<<EOF
<div class="error" id="1">第一层第一个div</div>
<div id="show">
<span>第一层第二个div</span>
<div id="2">
<span>第一层第二个div的第一个子div</span>
</div>
<div id="3">
<span>第一层第二个div的第二个子div</span>
</div>
</div>
EOF;
$startTag= '<div';
$endTag = '</div>';
$reg="#{$startTag}[^>]*?>(?:(?>[\s\S]*?(?={$startTag}|{$endTag}))|(?R))*{$endTag}#ui";
preg_match_all($reg,$data,$res,PREG_SET_ORDER);
print_r($res);
运行上面的代码时,请注意 <<<EOF和EOF后面需要直接换行,如果有报错,删掉后面的空格即可