2015-10-18 105 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来显示一个呈现您的内容的页面。