我有點困惑。我通過我寫入的基本清理功能來運行所有輸入,只允許某些字符,但[]
等字符仍然被允許。RegEx白名單問題
function sanitize($input) {
$pattern = "/[^a-zA-z0-9_-]/";
$filtered = preg_replace($pattern, "", $input);
return $filtered;}
任何想法爲什麼這樣做?
我有點困惑。我通過我寫入的基本清理功能來運行所有輸入,只允許某些字符,但[]
等字符仍然被允許。RegEx白名單問題
function sanitize($input) {
$pattern = "/[^a-zA-z0-9_-]/";
$filtered = preg_replace($pattern, "", $input);
return $filtered;}
任何想法爲什麼這樣做?
你必須利用第二個 「Z」:「/ [^ A-ZA-Z0-9_-] /「
添加到其他答案。
[a-zA-Z0-9_]
與\w
相同,爲單詞char。
所以[^a-zA-Z0-9_-]
可以寫成[^\w-]
理所當然地認爲[a-zA-Z0-9_]
相同\w
,雖然不拿。在http://se.php.net/manual/en/regexp.reference.escape.php它說,\w
「可能會發生特定於區域特定的匹配」。
darn,錯過了那個=) – VolkerK 2010-08-30 12:19:11