正则表达式获取HTML元素和属性

时间:2014-02-05 08:05:49

标签: php html regex dom

我是正则表达式的新手:我想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>

我知道,我完全错了 - 这个也与那些没有数据可编辑属性集的元素匹配,因为里面有.+。但是如何匹配不同的属性而不会丢失它们的值?

2 个答案:

答案 0 :(得分:1)

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

根据他们的文档,您可以通过以下方式执行所需操作:$html->find("div[data-editable]", 0)->outertext

答案 1 :(得分:0)

由于HTML不是常规语言,因此最好使用DOM解析器。更容易,