【问题标题】:Regular expressions : find all div tags which contain tag img正则表达式:查找所有包含标签 img 的 div 标签
【发布时间】:2013-04-18 16:55:01
【问题描述】:

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

谢谢

【问题讨论】:

  • 当一个 div 包含一个包含图像的 div 时,你想做什么?你确定你不想解析而不是使用正则表达式吗?
  • 不要使用正则表达式解析 HTML。他们不是合适的工具来做到这一点。 stackoverflow.com/questions/1732348/…
  • 我必须删除所有具有特定类并包含标签 img 的 div,在嵌套 div 的情况下我只删除最后一个。

标签: php regex html-parsing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多