【问题标题】:Regex to get HTML elements and attributes正则表达式获取 HTML 元素和属性
【发布时间】:2014-03-01 13:22:09
【问题描述】:

我对正则表达式非常陌生:我想 preg_match html dom 中的所有元素,它具有数据可编辑属性。这些元素的所有其他属性也应该匹配,所以我可以稍后重用它们:

<div class="teaser" id="teaser" data-editable><p>Content</p></div>

匹配后,我希望那些具有数据可编辑属性的元素具有特定的 css 类并在其中添加另一个元素。所以应该只匹配块级父级。

<div class="teaser editable" id="teaser"><button>edit</button><p>Content</p></div>

这是我得到的:

<(div|p).*(data-editable).[^>]+>(.*?)<\/\1>

我知道,我完全错了——这个也匹配没有设置数据可编辑属性的元素,因为里面有.+。但是如何在不丢失值的情况下匹配不同的属性呢?

【问题讨论】:

    标签: php html regex dom


    【解决方案1】:

    由于 HTML 不是常规语言,您最好使用 DOM 解析器。也容易多了

    【讨论】:

      【解决方案2】:

      您不应该使用正则表达式浏览 HTML(如 here 所示)。您应该做的是使用 HTML 解析框架,例如 PHP Simple DOM Parser 来处理您的 HTML 页面。

      根据他们的文档,您可以通过以下方式做您想做的事:$html-&gt;find("div[data-editable]", 0)-&gt;outertext

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多