2013-08-17 128 views
3

我正在用FuelPHP和TinyMCE编辑器构建一个简单的博客系统。HTML标记未呈现

当我在TinyMCE(或CKEditor,无所谓)中格式化文本并将其保存在我的数据库中时,一切正常。但是,当我将文本打印回来时,令人惊讶的是,我的浏览器不会呈现html标签并将它们显示为纯文本!

我检查过了,我没有任何一种CDATA在页面中,这可能会导致问题。

这里是如何呈现:

How it renders

然而,萤火检查问题的时候,我注意到有很多的空间正在被打印<h2>标记之前!如果我只是在空格上做一些小的改动(删除一个或添加另一个),那么浏览器将渲染标签并正确显示文本!

你们能帮我解决这个问题吗?这真的很奇怪。

+0

如何将数据传递给视图?你能显示代码吗?如果你使用View类,有一种方法可以让你选择何时编码文本(默认为yes):http://fuelphp.com/docs/classes/view.html#/method_set –

+0

@MarcoPace哦,是的..你让我的日子马可:)非常感谢。我刚刚忽略了这个参数:p –

+0

非常好:-),我会为未来的目的编写和回答 –

回答

2

当您保存在数据库中数据的一些安全方面的原因编码的,你只需要

html_entity_decode("string retrived from database");

,然后打印出来。

+0

我检查了数据库。它以纯文本形式存储在http标签中。 –

+0

这不是问题。然而,FuelPHP在从数据库中检索到文本后进行了编码。使用该功能有助于解决问题。 Thx –

+0

@MiroMarkaravanes你是如何解决它的? – PapaHotelPapa

0

代替编码和解码,您可以使用set_safe() method或使用set()中的$filter参数。

像这样:

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

或者

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

或者白名单您的看法。这将防止解码。

0

如何将数据传递给视图?你能显示代码吗?

如果您使用的是View class there is a method,它可以让您选择何时对文本进行编码(默认为)。