2014-02-05 36 views
-2

我在正则表达式中很新:我想preg_match在html dom中具有数据可编辑属性的所有元素。这些元素中的所有其他属性也应一致,所以我可以在以后重新使用它们:正则表达式来获取HTML元素和属性

<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> 

我知道,我完全错 - 这其中也匹配不具有数据编辑的属性,因为那集元素里面有.+。但是如何在不丢失其值的情况下匹配不同的属性?

回答

1

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

根据他们的文档,你可以通过这个做你想做的事:$html->find("div[data-editable]", 0)->outertext

0

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