2013-08-17 125 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,它可以讓您選擇何時對文本進行編碼(默認爲)。