1

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

谢谢

4

2 回答 2

1

如果您有可能像dystroy 所说的那样嵌套div div 图像,那么它不能用正则表达式正确完成,因为它实际上不是正则语言。可能你应该使用 DOM。这是相关的: 您如何在 PHP 中解析和处理 HTML/XML?

于 2013-04-18T17:05:02.463 回答
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;
       }
    }
}
于 2013-04-18T17:13:47.220 回答