3 回答

TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超5個(gè)贊
我們在利用ThinkPHP提交數(shù)據(jù)的時(shí)候,數(shù)據(jù)庫里的數(shù)據(jù)是含各種html標(biāo)簽的,那么在輸出時(shí)就可以直接輸出嘛。但是,也許你的老師曾經(jīng)告訴過你,在進(jìn)行后臺(tái)數(shù)據(jù)提交的時(shí)候,要過濾掉html標(biāo)簽,如I('content','','htmlspecialchars?')這樣來操作的。但是經(jīng)過這樣的過濾后,你要是還想直接輸出來或是進(jìn)行截取字符的時(shí)候就會(huì)遇到很多的麻煩。本人經(jīng)過多次摸索的實(shí)驗(yàn),得來以下經(jīng)驗(yàn),希望分享了可以幫助到大家。
總結(jié):
在運(yùn)用富文本提交數(shù)據(jù)時(shí),為了在數(shù)據(jù)輸出時(shí)能夠正常顯示,有以下幾種方法:
1、在接收數(shù)據(jù)時(shí)采用如I('content','','htmlspecialchars')則在首頁顯示并截取數(shù)據(jù)字符串時(shí),采用
{$m.content|htmlspecialchars_decode|strip_tags|cut_str=###,200,0}
其中,先把以過html轉(zhuǎn)義過的數(shù)據(jù)“<”恢復(fù)成如“<a>”這樣的html標(biāo)簽,再用strip_tags函數(shù)把所有的html數(shù)據(jù)都去除后再截取。
包括其中的javascript代碼都不會(huì)顯示,也不會(huì)運(yùn)行。
在詳細(xì)頁中使用{$news.content|htmlspecialchars_decode=###}
則在首頁截取后顯示的是有alert()代碼,但不會(huì)顯示其前面的<script></script>樣的字符,同時(shí)在詳細(xì)頁中不會(huì)顯示<script></script>
以及其中間的所有代碼。其他html標(biāo)簽正常輸出轉(zhuǎn)換。
?
?
2、在接收數(shù)據(jù)時(shí)采用I('content')的形式,則在首頁顯示并截取數(shù)據(jù)字符串時(shí),采用
{$m.content|strip_tags|cut_str=###,200,0}
其中,先把直接含html標(biāo)簽的數(shù)據(jù)利用strip_tags函數(shù)進(jìn)行去除后,再截取字符串輸出就可以了。
在詳細(xì)頁中使用{$news.content|htmlspecialchars_decode=###},則在首頁截取后顯示的是有alert()代碼,并且還會(huì)有其前面的<script></script>樣的字符,
在詳細(xì)頁中,這個(gè)會(huì)顯示javascript所有完整代碼,但不會(huì)執(zhí)行。
?
3、在接收數(shù)據(jù)時(shí)采用I('content','','htmlspecialchars')的形式,則在首頁顯示并截取數(shù)據(jù)字符串時(shí)采用
{$m.content|htmlspecialchars_decode|strip_tags|cut_str=###,200,0}
在詳細(xì)顯示頁時(shí)使用{$news.content}顯示
則首頁截取的字符串正常,詳細(xì)頁中的數(shù)據(jù)顯示也是正常的,完整的javascript代碼會(huì)顯示,但不會(huì)執(zhí)行。
添加回答
舉報(bào)