參考連接: http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-890.htmlphp
以前已經寫過Yii下防守CSRF與XSS[一]html
可是真正面臨測試的時候,有一個需求是說但願過濾掉特殊的字符,好比:,;」<>%等。web
Yii中的CHtml::purifier實際上只針對html的過濾,CHtml::encode本質上調用的是htmlspecialchars。框架
htmlspecialchars只轉化<、>、 單引號、雙引號、&符號ide
htmlentities會轉化全部的html符號函數
能夠看到PHP內置的函數都不能過濾所有的特殊字符,此時採用的方式是在Yii框架下,新建一個Filter類,本身重寫specialchar函數,能夠爲所欲爲的替換字符。爲了提升性能,能夠定義成public static調用。性能
class Filter { public static function ReplaceSpecialChar($str) { $str=str_replace(":",$str); //TODO: replace other chars $str = htmlspecialchars($str); return $str; } }
參考連接: http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-890.html測試