关于htmlspecialchars()函数

#1 phpha

用SP做网站,做到留言板功能时,就考虑到转义 < 和 >符号。
在控制器的动作里面循环数组并处理了,直接 var_dump(); 时,可以看到 < 符号被转义了。
可是到了模板里面,怎么就不管用了?
如果留言内容插入:

就布局乱了……怎么办?或许是有些东西我没有想清楚……
JAKE帮忙一下,谢谢。

该贴已经同步到 phpha的微博

2011-07-19 10:17:38

#2 phpha

//前台留言列表
public function show(){
$msObj = spClass('m_message');
$msinfo = $msObj->spLinker()->spPager($this->spArgs('page',1),5)->findAll(NULL,'msid DESC');
//htmlspecialchars处理
foreach($msinfo as $k1=>$v1){
foreach($v1 as $k2=>$v2){
$v1[$k2] = htmlspecialchars($v2,ENT_QUOTES);
}
}
$this->msinfo = $msinfo;
$this->pager = $msObj->spPager()->getPager();
$this->display('home/message.html');
}

2011-07-19 10:54:24

#3 phpha

回复 2 phpha


    看下上面的代码写法有错吗?

2011-07-19 10:54:57

#4 jake

在你要显示留言的模板内,用smarty的excape来修饰留言内容的变量。
http://www.smarty.net/docs/en/language.modifier.escape.tpl

比如说
{$contents|escape:'html'}   那么 & " ' < >  这些都会被转成HTML的&039之类的(看页面源代码,网页上还是会显示 < >之类的)

2011-07-19 12:11:23

#5 phpha

回复 4 jake


    额,想起来了……ECSHOP中就是这样的……
谢谢JAKE提醒~
另外,在程序里面,我还是继续用stripslashes(htmlspecialchars($v2,ENT_QUOTES))吧~

2011-07-19 13:48:32