2013-04-18 86 views
1

我需要查找和替換它包含標籤img的所有div標籤,我嘗試了一些正則表達式,而不更迭:( 這是一個正則表達式,我試過的例子: /(<div class="indicator"[^<]*>.*<img[^>]*>[^<]*</div>)/g 請幫助正則表達式:找到包含標籤img的所有div標籤

謝謝

+1

並且當div包含一個包含圖像的div時你想要做什麼?你確定你不想解析而不是使用正則表達式嗎? –

+1

http://php.net/manual/en/book.dom.php – Sammitch

+2

不要用正則表達式解析HTML。他們不適合做這件事。 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags#answers – shark555

回答

1

最好不要嘗試解析使用正則表達式的HTML,它可以很容易出錯。使用DOM你可以這樣做:

$doc = new DOMDocument(); 
libxml_use_internal_errors(true); 
$doc->loadHTML($html); // loads your html 
$nodeList = $doc->getElementsByTagName('div'); 
for($i=0; $i < $nodeList->length; $i++) { 
    $node = $nodeList->item($i); 
    $children = $node->childNodes; 
    foreach ($children as $child) { 
     if ($child->nodeName == 'img') { 
      echo "DIV tag contains IMG tag\n"; 
      break; 
     } 
    } 
} 
相關問題