php正则表达式html嵌套匹配问题

<div><div></div></div>这种嵌套应该怎么匹配呢... <div>
<div>

</div>
</div>
这种嵌套应该怎么匹配呢
展开
 我来答
albumin
推荐于2016-10-12 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2405万
展开全部
php的preg正则本身就支持递归吧

(<div>((?1)|\s)*</div>)
用preg_match_all函数是这样写
preg_match_all('{(<div>((?1)|\s)*</div>)}i',$htmltext,$matchs)
这个正则理论上可以匹配到任意层数嵌套的div,为了简化在div之间只能有空格和换行,不能出现其它字符.
解释一下(?1)表示递归引用第一个Group,也就是第一个圆括号的正则
在(?1)的位置可以替换为正则(<div>((?1)|\s)*</div>),然后可以无限递归下去
追问
这个为什么也能匹配到换行的呀
追答
\s匹配空白符,这个空白符包括空格,制表符\t,换行等
搞文艺的老王
2013-11-16 · TA获得超过1291个赞
知道小有建树答主
回答量:1706
采纳率:51%
帮助的人:451万
展开全部
具体代码是什么,举个例子,想匹配哪个匹域指明一下
更多追问追答
追问
code:

匹配到

这种嵌套div
追答
<?php
header("content-type:text/html;charset='utf-8'");
$str="code:<div>
<div>

</div>
</div>
</div>
匹配到
<div>
<div>

</div>
</div>这种嵌套div";
if(preg_match("/(<(div)>.+){2}(<\/\\2>.+){3}(<\\2>.+){2}(<\/\\2>.+){2}/Usi", $str,$arr)){
echo $arr[0];
}
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式