HTML标签未被渲染

3
我正在使用FuelPHP和TinyMCE编辑器构建一个简单的博客系统。
当我使用TinyMCE(或CKEditor)格式化文本并将其保存到数据库中时,一切正常。 但是,当我将文本打印回来时,惊讶地发现,我的浏览器不会渲染HTML标签,并将它们显示为纯文本!
我已经检查过页面上是否有任何类型的CDATA可能会导致此问题。
以下是它的呈现方式:
然而,通过FireBug检查问题时,我注意到在打印< h2 >标签之前有很多空格!如果我只是改动空格(删除一个或添加另一个),那么浏览器就会渲染标记并正确地显示文本!
你们能帮我解决这个问题吗?这真的很奇怪。

你如何将数据传递给视图?你能展示一下代码吗?如果你正在使用View类,那么有一个方法可以让你选择何时编码文本或不编码(默认是是):http://fuelphp.com/docs/classes/view.html#/method_set - Marco Pace
@MarcoPace 哦,是的...你让我开心了,Marco :) 非常感谢。我刚刚忽略了那个参数 :p - Miro Markaravanes
非常好 :-),我会写下答案以备将来之需。 - Marco Pace
FuelPHP采用输出编码作为安全措施。每个发送到视图的变量都将被编码,除非您明确禁用它,可以通过set()或set_safe()来实现禁用。 - WanWizard
3个回答

2
当您将数据保存在数据库中时,为了某些安全原因,其编码了。您只需要使用以下代码解码即可: html_entity_decode("从数据库检索到的字符串"); 然后再打印它。

我已经检查了数据库,它以纯文本形式存储,并带有http标签。 - Miro Markaravanes
那不是问题所在。然而,FuelPHP在从数据库检索文本后进行了编码。使用该函数有助于解决这个问题。谢谢。 - Miro Markaravanes
@MiroMarkaravanes 你是怎么解决的? - PapaHotelPapa

0

不必进行编码和解码,您可以使用set_safe()方法或在set()中使用$filter参数。

像这样:

$view->set_safe('body', $data);

或者

$view->set('body', $data, false);

或者将您的视图加入白名单,这样可以防止解码。


0
你如何将数据传递到视图中?能展示一下代码吗?
如果你正在使用View类, 那么有一个方法可以让你选择何时对文本进行编码或不编码(默认为)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接