求一段删除DIV正则

lyb2006 2010-09-10 10:05:27
如何用正则把下面这段全删除

<div class="abc">
<div class="12"></div>
<div class="12"></div>
<div class="12"></div>
<div class="12"></div>
</div >

这个是我写的,为什么只能删除部分

$xhtml = preg_replace('/<div class="abc">([\s\S]*?)<\/div>/', '', $xhtml);

注意:里面包含的DIV 数量未知的情况下
...全文
153 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kyzy_yy_pm 2010-09-11
  • 打赏
  • 举报
回复
要删除div中间的东西么?
eggno8 2010-09-11
  • 打赏
  • 举报
回复
$xhtml = preg_replace('/<div[^>]+>([\s\S]*?)<\/div>/g', '', $xhtml);
你把div属性写固定成abc了,写成这种泛型的试试呢
lyb2006 2010-09-11
  • 打赏
  • 举报
回复
谢谢啊
eggno8 2010-09-11
  • 打赏
  • 举报
回复
刚才需求看错了,楼主好像需要的是删除带嵌套的某个div,这段代码可以删除双层的:

$xhtml = "
<div class=\"out\">
<div class=\"abc\">
outside words1
<div class=\"12\">1</div>
<div class=\"13\">2</div>
<div class=\"14\">3</div>
outside words2
<div class=\"15\">4</div>
</div>
</div>";
$xhtml = preg_replace('/<div class=\"abc\">([^<]*?<div[^>]+>.*?<\/div>)+[^<]*?<\/div>/', '', $xhtml);
echo $xhtml;

删完对应的class=abc的div之后剩下

<div class="out">

</div>

好像这个是可以用平衡组来实现。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧