3 回答

TA貢獻4條經驗 獲得超5個贊
我們在利用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代碼會顯示,但不會執行。
添加回答
舉報