Php 正则表达式:查找包含标记img的所有div标记

Php 正则表达式:查找包含标记img的所有div标记,php,regex,html-parsing,Php,Regex,Html Parsing,我需要找到并替换所有包含标记img的div标记,我尝试了一些正则表达式,但没有成功:( 这是我尝试过的正则表达式的一个示例: /([^如果您有可能像dystroy所说的那样拥有嵌套的div-div图像,那么使用正则表达式是不可能的,因为它实际上不是一种正则语言。可能您应该使用DOM。这与此相关: 最好不要尝试使用正则表达式解析HTML,它可能容易出错。使用正则表达式可以执行以下操作: $doc = new DOMDocument(); libxml_use_internal_errors(tru

我需要找到并替换所有包含标记img的div标记,我尝试了一些正则表达式,但没有成功:( 这是我尝试过的正则表达式的一个示例:
/([^如果您有可能像dystroy所说的那样拥有嵌套的div-div图像,那么使用正则表达式是不可能的,因为它实际上不是一种正则语言。可能您应该使用DOM。这与此相关:

最好不要尝试使用正则表达式解析HTML,它可能容易出错。使用正则表达式可以执行以下操作:

$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;
       }
    }
}
$doc=newDOMDocument();
libxml\u使用\u内部错误(true);
$doc->loadHTML($html);//加载您的html
$nodeList=$doc->getElementsByTagName('div');
对于($i=0;$i<$nodeList->length;$i++){
$node=$nodeList->item($i);
$children=$node->childNodes;
foreach($childrenas$child){
如果($child->nodeName=='img'){
echo“DIV标记包含IMG标记\n”;
打破
}
}
}

当一个div包含一个包含图像的div时,你想做什么?你确定不想解析而不是使用正则表达式吗?不要用正则表达式解析HTML。它们不是合适的工具。我必须删除所有包含特定类和标记img的div,在嵌套div的情况下,我只删除最后一个。