2011-01-22 91 views
1

我已经消毒我的形式的输入(textarea的字段),并且当我在我的视图中显示它弄出来这样的:Zend的消毒输入

& LT,P & GT;我在它\'米赢得它!!我期待着参加比赛&比赛中心。他的目标是交叉授粉舞台,屏幕和立体声音乐,让这些作品同时兼顾现代生活的幽默和沮丧。 & lt;/p & gt;

在我的控制器我有这样的:

public function init(){ 

$this->view->setEscape('html_entity_decode'); 
$this->view->setEscape('stripslashes'); 

} 

但是只有一个作品,如果我删除一个setEscape那么其他的作品,反之亦然。所以我可以让stripslashes工作,如果我先把它,但html_entity_decode不会工作,反之亦然

回答

5

您需要定义自己的功能,应该用于转义。例如,你可以定义库中的一类My_Tools /我的/ Tools.php如下:

<?php 
#Tools.php 

class My_Tools { 

    /** 
    * My custom escape function 
    * 
    * @param string $str String to be escaped 
    * @return string Escaped string 
    */ 
    static function myEscape($str) { 
     $str = html_entity_decode($str); 
     return stripslashes($str); 
    } 

} 

?> 

然后,你的init()可以有以下形式:

public function init() { 

    require_once(APPLICATION_PATH . '/../library/My/Tools.php'); 
    $this->view->setEscape(array('My_Tools', 'myEscape')); 

} 

关当然会最好将Tools添加到Autoloader中,但这仅仅是一个例子。

+0

在myEscape函数什么$ str我作为参数传递? – coder3 2011-01-22 10:11:46