当前位置: 首页 > 知识库问答 >
问题:

使用preg_match查找特定的HTML标记组合

方权
2023-03-14

我试图创建一个preg_匹配,在HTML文档中查找一系列标记。

HTML示例:

html lang-html prettyprint-override"><div class="importantclass">
  <p>some thing</p>
  <p>some more things</p>
</div>
<div class="importantclass">
  <b>some text</b>
  <p>NEEDLE</p>
</div>

我需要找到带有div class=“importantclass”的标签和一个包含特定指针文本的后续p标签的组合。

然后我需要返回开始div类的位置。注意:我不想获得匹配,因为importantclass div第一次出现。

有没有可能不使用DOM而只使用regexp来实现这一点?

谢谢你的提示!

共有1个答案

裘臻
2023-03-14

这对你有用吗?

<?php
    $html = <<< LOB
<div class="importantclass">
  <p>some thing</p>
  <p>some more things</p>
</div>
<div class="importantclass">
  <b>some text</b>
  <p>FIND ME</p>
</div>
LOB;

    $needle = "FIND ME";
    preg_match_all('%(<div.*?class="importantclass">.*?</div>)%sim', $html, $matches, PREG_PATTERN_ORDER);
    for ($i = 0; $i < count($matches[1]); $i++) {
        if (preg_match("%<p>$needle</p>%im", $matches[1][$i])) {
            echo "MATCH FOUND!<br>";
            echo "POSITION $i<br>";
            echo htmlentities( $matches[1][$i]);
        }
}

演示

 类似资料:
  • 问题内容: 我可以使用BS轻松遍历通用标签,但是我不知道如何查找特定标签。例如,我怎么能找到所有的出现?BS可以吗? 问题答案: 以下应该工作 有两种搜索标签的方法。 http://www.crummy.com/software/BeautifulSoup/documentation.html 有关更多文本的理解和使用 http://lxml.de/elementsoup.html

  • 问题内容: 我有以下数据: 对于每组记录(按ParentID分组),我想查找所有没有包含“ A”作为数据值的记录的组。 由于第1组和第6组确实包含至少一个以“ A”作为数据值的记录,因此我不希望看到它们。我只想查看记录4和5(它们是组4的一部分),因为该组中没有记录带有“ A”。 任何帮助是极大的赞赏! 问题答案: 如果表很大,建议建立索引。

  • 问题内容: 我不知道如何在下面编写查询。 我的桌子是 我需要在col2中同时存在两个参数的地方选择不同的col1 id。例如。如果我发送6,7应该发送给我5 问题答案: 尝试:

  • 我正试图用漂亮的汤刮一个汇合页的身体。当使用Confluence API时,我会得到以下正文(这只是其中的一部分): 我已经搜索了我的屁股,但不知何故,我似乎不明白如何搜索一个段落与特定的文本。 另一件我认识但不明白的事情是:当我使用:搜索所有段落时,我会找到该段落,但它包含了所有子元素的所有文本,因此段落文本如下所示:“System Status:GreenIN Operation”

  • 我只需要帮助替换alt标签中的-(而不是代码/html的其余部分)。 错误:alt=“允许滚筒干燥” 良好:alt=“允许滚筒干燥” 我使用的是ATOM,而REGEXP教程对我来说是陌生的。(看起来很奇怪) 任何帮助都将不胜感激。 最终,我也会瞄准标题标签,但我需要一个领先的开始

  • 我要提取的数据来自这个网站https://www.adobe.com/support/security/advisories/apsa11-04.html。我只想提取 发布日期:2011年12月6日最后更新:2012年1月10日漏洞标识符:APSA11-04 CVE编号:CVE-2011-2462 代码: 输出: 我不想要这些信息。我该如何过滤呢? 平台:全部*注意:Adobe Reader fo