我對一個字符串使用sanitize :: paranoid,但我需要排除一些特殊字符,但它似乎不工作。Cakephp消毒和特殊字符
$content=sanitize::paranoid($content,array('à',' '));
我改文件的編碼從ANSI爲utf8,但CakePHP會不喜歡它,所以我需要找到另一種方式。
該數組應該包含要從消毒處理中排除的字符列表,但它會一直刪除「à」,並且我希望這些字符位於最終字符串中。
我對一個字符串使用sanitize :: paranoid,但我需要排除一些特殊字符,但它似乎不工作。Cakephp消毒和特殊字符
$content=sanitize::paranoid($content,array('à',' '));
我改文件的編碼從ANSI爲utf8,但CakePHP會不喜歡它,所以我需要找到另一種方式。
該數組應該包含要從消毒處理中排除的字符列表,但它會一直刪除「à」,並且我希望這些字符位於最終字符串中。
Sanitize:paranoid
是一個簡單的preg_replace
($allow
只是其他字符,轉義):
preg_replace("/[^{$allow}a-zA-Z0-9]/", '', $string);
正如你所看到的,paranoid
是很偏執......默認不接受非ASCII字符。
,你有à
可能是保存在另一種編碼的文件(在Windows上工作?)
無論如何,如果你願意,你可以通過使用/[^\p{L}]/u
,它排除了任何lanaguage字母寫出更好的過濾器。
從消毒兩者::偏執功能:
cleaned = preg_replace("/[^{$allow}a-zA-Z0-9]/", '', $string);
因爲你的性格(A)不在此範圍內,將不予退還。 如果你使用的蛋糕2.X可以覆蓋消毒類的app文件夾 和替換所有出現:
a-zA-Z0-9
有:
\w
這將返回重音符號(它對我來說)。如果你喜歡,你也可以看看 multibyte functions,但如果你正在構建一個CMS,這可能是一個問題。
它必須是CakePHP的偏執犯規一些特殊的編碼問題知道
Sanitize::paranoid($badString, array(' ', '@')); @ is the allowed char
應該工作。我自己嘗試過這個例子
哪個Cake版本你使用..? – 2012-02-01 09:38:01
你有PCRE的unicode支持嗎? – 2012-02-01 10:08:12
@BarryChapman這是一個cms,我們無法對服務器配置做出假設 – Chobeat 2012-02-01 10:20:49