我有一个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 ='/<div\sclass=[\"\']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>
答案 0 :(得分:0)
以下 regex 应该这样做:
(?s)(?<=<div\sclass="test">\n).*(?=<\/div>)
<强> PHP 强>
<?php
$regex = '/(?s)(?<=<div\sclass="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);
?>