【问题标题】:Regex expression to only get text not between tags [duplicate]正则表达式仅获取不在标签之间的文本[重复]
【发布时间】:2020-10-14 04:08:54
【问题描述】:

我正在尝试创建一个不会在<h1> </h1> 标记之间获取文本的正则表达式。我设法创建了一个表达式来获取标签之间的文本,但这与我想要的相反。任何帮助将不胜感激!

示例: <h1> Don't include here </h1> Include this part 应该给Include this part

【问题讨论】:

    标签: php html regex text replace


    【解决方案1】:

    正则表达式是正确的工具吗?如果您确实需要从 HTML 中提取数据,请考虑使用适当的 HTML 解析器。 PHP 内置的DOMDocument 支持解析HTML。

    $document=DOMDocument::loadHtml($yourHtml); //Parse the HTML
    $headings=$document->getElementByTagName("h1"); //Find all H1's
    foreach($headings as $heading)
        $document->removeChild($heading); //Remove all H1's
    $remainingText=$document->textContent; //Remaining text after H1's have been removed
    

    【讨论】:

    • 感谢您的建议,但我有点需要为这个特定的应用程序使用正则表达式
    【解决方案2】:

    这是一个 sn-p,它可以抓取 任何标签 之外的任何文本,我对正则表达式还不够熟悉,无法将其专门用于 <h1> 标签,但这可能适用于您的用例?

    [^<>]*(?![^<]*>|[^<>]*<\/)
    

    RegExr link

    【讨论】:

      猜你喜欢
      • 2011-03-18
      • 2014-07-26
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      相关资源
      最近更新 更多