我无法弄清楚如何只获得那些不包含其他div的'div'-s(含有内容)。
例如:
<div id='first'>
...
<div id='second'>
...
</div>
</div>
<div id='third'>
...
</div>
我只需要'第二'和'第三'div'内容,打开和关闭标签,因为它们不包含其他div。
我尝试了这种模式:~(<div id='[a-z].+')(.*?)(</div>)~s
但这还不行。
我希望我很清楚......提前谢谢!!
答案 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。