2011-01-22 62 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