如何用正则把下面这段全删除<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 数量未知的情况下

解决方案 »

  1.   

    $xhtml = preg_replace('/<div[^>]+>([\s\S]*?)<\/div>/g', '', $xhtml);
    你把div属性写固定成abc了,写成这种泛型的试试呢
      

  2.   

    刚才需求看错了,楼主好像需要的是删除带嵌套的某个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>好像这个是可以用平衡组来实现。