2014-02-05 65 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解析器。要容易得多,也