ThinkPHP框架中使用富文字編輯器後如何輸出
htmlspecialchars_decode()用這個能解析裡面的符號
我們在利用ThinkPHP提交資料的時候,資料庫裡的資料是含各種html標籤的,那麼在輸出時就可以直接輸出嘛。但是,也許你的老師曾經告訴過你,在進行後臺資料提交的時候,要過濾掉html標籤,如I('content','','htmlspecialchars ')這樣來操作的。但是經過這樣的過濾後,你要是還想直接輸出來或是進行擷取字元的時候就會遇到很多的麻煩。本人經過多次摸索的實驗,得來以下經驗,希望分享了可以幫助到大家。
總結:
在運用富文字提交資料時,為了在資料輸出時能夠正常顯示,有以下幾種方法:
1、在接收資料時採用如I('content','','htmlspecialchars')則在首頁顯示並擷取資料字串時,採用
{$m.content|htmlspecialchars_decode|strip_tags|cut_str=###,200,0}
其中,先把以過html轉義過的資料“<”恢復成如“<a>”這樣的html標籤,再用strip_tags函式把所有的html資料都去除後再擷取。
包括其中的javascript程式碼都不會顯示,也不會執行。
在詳細頁中使用{$news.content|htmlspecialchars_decode=###}
則在首頁擷取後顯示的是有alert()程式碼,但不會顯示其前面的<script></script>樣的字元,同時在詳細頁中不會顯示<script></script>
以及其中間的所有程式碼。其他html標籤正常輸出轉換。
2、在接收資料時採用I('content')的形式,則在首頁顯示並擷取資料字串時,採用
{$m.content|strip_tags|cut_str=###,200,0}
其中,先把直接含html標籤的資料利用strip_tags函式進行去除後,再擷取字串輸出就可以了。
在詳細頁中使用{$news.content|htmlspecialchars_decode=###},則在首頁擷取後顯示的是有alert()程式碼,並且還會有其前面的<script></script>樣的字元,
在詳細頁中,這個會顯示javascript所有完整程式碼,但不會執行。
3、在接收資料時採用I('content','','htmlspecialchars')的形式,則在首頁顯示並擷取資料字串時採用
{$m.content|htmlspecialchars_decode|strip_tags|cut_str=###,200,0}
在詳細顯示頁時使用{$news.content}顯示
則首頁擷取的字串正常,詳細頁中的資料顯示也是正常的,完整的javascript程式碼會顯示,但不會執行。