我已經在客戶端的網站上安裝了CKeditor,允許他們使用所見即所得的編輯器輸入一些文本。它被鎖定在大多數情況下,只允許粗體,斜體,無序列表等如何使用PHP刪除「空白標記」 - 即多個沒有文本節點的嵌套元素
我也貫穿HTML purifier用戶提交的HTML,以確保他們沒有得到智能並開始嘗試添加表, 例如。例如,限制他們可以輸入的XSS問題也是一個好主意。
我只是看了一些由CKEDITOR/HTML淨化器組合產生的輸出,而看到這一暴行......
<p>
<span style="font-size:11px;"><br /></span></p>
反正我有可以配置HTML淨化器或用別的刪除元素沒有文本節點?顯然需要從最新的後代開始,然後運行DOM樹,刪除沒有包含文本節點元素的大多數父代。
這種方法是否存在任何邊緣情況,假設該標記中從未有任何表示性元素?沒有自我關閉的元素會出現,我可以想到(例如圖像,輸入元素等)。
不容易;特別是很難判斷是否應該刪除br標籤。 – 2010-08-10 17:02:03