PHP-如何通过正则提取DIV提取内容



我有一串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);
?>

最新更新