内容包含更多div

时间:2015-09-23 06:43:54

标签: javascript html regex

问题是当内容包含更多div时,嵌套的div如下:



 <div class="box" id="customer-login">Content <div class="bl-2">more stuff</div>more contents</div> 
&#13;
&#13;
&#13;

关于如何使我的正则表达式使用嵌套标记的任何想法?

由于

1 个答案:

答案 0 :(得分:0)

尝试使用解析器:

require_once "simple_html_dom.php";
$text = 'foo <div id="t1">Content <div>more stuff</div></div> bar <div>even more</div> baz  <div id="t2">yes</div>';
$html = str_get_html($text);
foreach($html->find('div') as $e) {
    if(isset($e->attr['id']) && preg_match('/^t\d++/', $e->attr['id'])) {
        echo $e->outertext . "\n";
    }
}

输出:

<div id="t1">Content <div>more stuff</div></div>
<div id="t2">yes</div>

在此处下载解析器:http://simplehtmldom.sourceforge.net/

编辑:为了我自己的乐趣,我尝试在正则表达式中进行更多操作。这就是我想出的:

$text = 'foo <div id="t1">Content <div>more stuff</div></div> bar <div>even more</div>
      baz <div id="t2">yes <div>aaa<div>bbb<div>ccc</div>bbb</div>aaa</div> </div>';
if(preg_match_all('#<div\s+id="t\d+">[^<>]*(<div[^>]*>(?:[^<>]*|(?1))*</div>)[^<>]*</div>#si', $text, $matches)) {
    print_r($matches[0]);
}

Refer this page