2013-04-18 59 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; 
     } 
    } 
} 
相关问题