正则表达式:找到包含标签img的所有div标签

时间:2013-04-18 16:55:02

标签: php regex html-parsing

我需要找到并替换包含标签img的所有div标签,我尝试了一些没有成功的正则表达式:( 这是我尝试的正则表达式的示例: /(<div class="indicator"[^<]*>.*<img[^>]*>[^<]*</div>)/g 请帮忙

谢谢

2 个答案:

答案 0 :(得分:1)

如果你有可能有像divtroy那样嵌套的div div图像,那么它就不能用正则表达式正确完成,因为它实际上不是常规语言。可能你应该使用DOM。这是相关的: How do you parse and process HTML/XML in PHP?

答案 1 :(得分:1)

最好不要尝试使用RegEx解析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;
       }
    }
}