2011-12-23 66 views
4

是否有可能爲一個正則表達式來清理空白的HTML?從HTML清潔空白與正則表達式

例如:

<p><b>foo</b> <i>bar</i></p> 
<p>foo</p> <p>bar</p> 

在第一行中,關閉B和開口我標籤之間的空間是有效的(雖然它可能是一個&nbsp;),然而在第二行它是空白,我希望清理,因爲它不應該有任何語義價值。

也許這將更好地與DOM遍歷解決了嗎?

回答

5

看起來像HTML Tidy這樣的東西對於您所尋找的東西來說可能更好 - 而不是需要重新創建所有可能複雜的規則(例如您的示例中的第一個空格是重要的,但不是第2個等)

否則,我同意 - DOM遍歷會比正則表達式一個更好的方法 - 特別是如果你的HTML已經是XHTML標準,可以很容易地橫移爲XML。

+0

我有一個快速四處尋找一個JavaScript實現HTML整齊,但沒有運氣,所以DOM遍歷它。我需要這個儘可能快的運行,所以希望IE不會造成太多問題。 – Dave 2011-12-23 15:27:05

+0

爲什麼還要頗費周折在JavaScript這樣做呢?誰將受益?所有的HTML都已經傳輸到客戶端並由瀏覽器呈現,因此您不會在帶寬或瀏覽器呈現方面保存任何內容。 – ziesemer 2011-12-23 15:30:34

+0

然後,我多了一點額外的背景,我正在擺弄一個自滿的div和diff-match-patch庫。取決於contenteditable的瀏覽器實現,我得到不同數量的空白,導致在我來回瀏覽不同瀏覽器時導致無處不在的差異。我能想到的最簡單的解決方法是完全去除空白。 – Dave 2011-12-23 15:39:31

0

首先我必須引用;) 「要求正則表達式解析任意HTML就像要求Paris Hilton編寫操作系統」 然後回到業務。 你可以嘗試不同的正則表達式來標記(雖然,我懷疑這是有效的方法):

sed -e 's/<p>\ </<p></g' 

,消除<p>(whitespace)<(whatever_tag)空白。

否則,我也同意DOM遍歷。