2015-10-18 108 views
2

我的任務是探索博客並獲取他們的最新帖子。現在我有腳本完成任務並將內容作爲html存儲在數據庫中。
除了模板推理,一切正常。意思是如果內容html代碼例如有一個額外的</div>或忘記關閉標籤,它會毀掉我的整個頁面。防止外部html干擾整個頁面模板

問:有什麼辦法給外部內容限制在一個部門,因此,如果外部代碼出現了一些問題,只是影響該div箱而不是整個模板的模板?

Link to correct template
Link to damaged template

在此先感謝

+0

您使用什麼編程語言來獲取此內容? –

+0

PHP,如果有問題,請告訴我將其添加到我的問題中,謝謝 –

+0

消耗RSS代替或解析和序列化html重新服務之前。 – dandavis

回答

1

我們可以簡化通過使用修復被廢棄的格式不正確的代碼庫。

你可以做這樣的:

<?php 
$content = '<div><p>I am a bad guy, and i am gonna put an additional div at the end.</p></div></div>'; 

$dom = new DOMDocument(); 
libxml_use_internal_errors(true); 
$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 
libxml_clear_errors(); 
$content = trim($dom->saveHTML()); 


echo $content; 

它將返回:

<div><p>I am a bad guy, and i am gonna put an additional div at the end.</p></div> 
+0

感謝lago它工作正常,但它不支持utf8編碼,結果是這樣的:'...ØØاÙ「ÙانØÙ...Ù」هرÙØ³ÛŒÙ‡Ø¨Ù‡Ø¯Ø§Ø¹Ø '' –

+0

是的,我建議你看到這個問題:http://stackoverflow.com/questions/11309194/php-domdocument-failing-to-handle-utf-8-characters只是爲了不在這裏複製。 –

+0

非常感謝你bro –

1

比較安全的方法,以確保它不會影響任何東西您的網頁上,據我」意識到,就是爲了iframe而已。其他任何東西都會注入到你的頁面中,所以你會冒着你提到的東西像未封閉的標籤,風格標籤覆蓋你的CSS,潛在的惡意JS等,除非你做了一些嚴肅的解析和糾錯。其中一些是通過諸如JQuery的AJAX函數來完成的,但是如果您根本無法冒任何風險,那麼我會使用一個iframe來顯示一個呈現您的內容的頁面。