我是正则表达式的新手:我想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>
我知道,我完全错了 - 这个也与那些没有数据可编辑属性集的元素匹配,因为里面有.+
。但是如何匹配不同的属性而不会丢失它们的值?
答案 0 :(得分:1)
你不应该使用正则表达式来浏览HTML(如图here所示)。你应该做的是使用HTML解析框架,例如PHP Simple DOM Parser来处理你的HTML页面。
根据他们的文档,您可以通过以下方式执行所需操作:$html->find("div[data-editable]", 0)->outertext
答案 1 :(得分:0)
由于HTML不是常规语言,因此最好使用DOM解析器。更容易,