2013-01-13 31 views
0

在一个PHP函数中,我从我的MySQL数据库中抓取随机块,这些块可能是或者可能不是很好。一个例子是:如何封装数据库HTML响应

<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Heres something to display<br><br>Thanks,<br><br> 

我再从PHP函数返回的HTML这一块,重复着返回到页面上为持有人<div>

我遇到的问题是上述显示正常,但因为它没有结束标记,所以它在显示时会对DOM造成严重破坏。我无法控制HTML如何形成,因为它来自随机电子邮件回复。我的问题是,无论如何封装这一大块的HTML,并从我的其余页面切断它?除了<div>之外,有没有标签可以包装这个HTML,这将确保无论它的形式如何,它都会显示,但不会与页面的其他部分进行交互?

+0

在浏览器中,您想查看一个表格,还是要查看标签'

+0

HTML的差别很大。在上面的例子中,可以被视为纯文本。如果HTML没有完全形成,那么纯文本就没有问题,但是在HTML确实有适当的标记的情况下,Id喜欢按照预期显示。 –

+0

如果上述不可行,只要换行符正确显示,纯文本显示就可以正常显示。 –

回答

0

您可以限制通过DOM解析器运行造成的损害。例如:

libxml_use_internal_errors(true); 
$dom = new DOMDocument(); 
$dom->loadXML("<root>".$your_malformed_html."</root>"); 
$reformatted_html = substr($dom->saveXML(),6,-7); 
+0

感谢您的回复。我是一个新手,并没有使用DOM解析器,但现在开始阅读。快速的问题:保证它不会破坏页面,或者是唯一的方法来做到这一点,以转换为纯文本和剥离所有的标签?封装这段代码是否无法将它与其余标签保持一致? –

+0

它把你扔到它的东西“转换”为格式良好的XML(而不是HTML,它会添加' ...'和东西给它)。这将确保它/不应该/打破页面,但是如果格式太差,您可能会得到一个空的结果。 –

+0

我会检查出来。谢谢! –