$a='<div id="css">1<div>2</div>3</div><div>4</div>';preg_match_all('/<div id=\"css\">(.*?)<\/div>/',$a,$match);
echo '<pre>';
var_dump($match);请问高手们:网上写的匹配div都是这样写的,但是我写的时候,发现他不能完整的匹配一个div块! 如这个我这个div id=css他的结束/div在3的后面,但是这样写只能到2那里就结束了,有没有什么方法匹配到他自己的div块?

解决方案 »

  1.   

    额,那有啥办法,如果是一个页面的代码,我们想把头部和尾部的div去掉,请问有什么好的方案?
      

  2.   

    http://downloads.sourceforge.net/project/simplehtmldom/simplehtmldom/1.5/simplehtmldom_1_5.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fsimplehtmldom%2Ffiles%2F&ts=1332749181&use_mirror=nchcsimplehtmldom 类
    简单、实用、高效完全不需要自己去摆弄正则
      

  3.   

    嵌套的标签用递归匹配
    <?php
    $str='<div id="css">1<div>2</div>3</div><div>4</div>';
    $pattern='#<div[^<>]*>(([^<>]*|(?R))*)</[^<>]*>#';
    preg_match_all($pattern,$str,$matches);echo $matches[0][0];
    //<div id="css">1<div>2</div>3</div>
      

  4.   

    去掉首尾的div
    <?php
    $str='<div id="css">1<div>2</div>3</div><div>4</div>';
    $pattern="/[^<div]*<div[^<>]*>(.*)<\/div>[^<\/div>]*/";
    echo preg_replace($pattern,"$1",$str);
    //1<div>2</div>3</div><div>4