preg_match:获取不包含div的div-s

时间:2011-11-03 08:36:53

标签: php regex

我无法弄清楚如何只获得那些不包含其他div的'div'-s(含有内容)。

例如:

<div id='first'>
    ...
    <div id='second'> 
        ...
    </div> 
</div> 
<div id='third'> 
    ...
</div>

我只需要'第二'和'第三'div'内容,打开和关闭标签,因为它们不包含其他div。

我尝试了这种模式:~(<div id='[a-z].+')(.*?)(</div>)~s 但这还不行。

我希望我很清楚......提前谢谢!!

1 个答案:

答案 0 :(得分:1)

虽然我不是纳粹使用rexex来提取HTML,但使用xpath和DOM时这个问题要容易得多。

$dom = new DomDocument();
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$divs = $xpath->query("//div[not(div)]");

我没有测试那段代码。但关键部分是not运算符,它找到没有div子节点的所有div。