我有一串HTML,其中一些遗传的 div
存在,我只需要提取顶级div,例如 -
$html= '<div class="test">
<div>
<div>Some text 1</div>
<div>Image content 2</div>
</div>
<div>
<div>Some text 2</div>
<div>Image content 2</div>
</div>
....
</div>';
$regex ='/<divsclass=["']test["']>.*?</div>/is';
preg_match($regex, $html, $matches);
但真正的问题是结果仅向我展示了第一个Some text 1</div>
,请帮助我弄清楚我在哪里犯了错误?
结果,我需要抓住整个 test
'div'的结果。
<div>
<div>Some text 1</div>
<div>Image content 2</div>
</div>
<div>
<div>Some text 2</div>
<div>Image content 2</div>
</div>
以下 REGEX 应该这样做:
(?s)(?<=<divsclass="test">n).*(?=</div>)
请参阅 demo/dixpanation
php
<?php
$regex = '/(?s)(?<=<divsclass="test">n).*(?=</div>)/';
$str = '<div class="test">
<div>
<div>Some text 1</div>
<div>Image content 2</div>
</div>
<div>
<div>Some text 2</div>
<div>Image content 2</div>
</div>
....
</div>';
preg_match($regex, $str, $matches);
print_r($matches);
?>