在用戶名注冊時,我加入了正則表達式驗證,可是在preg_match()函數進行匹配卻總是出錯
代碼如下:
//在注冊函數庫裡編寫的函數:
function check($username){
$pattern = '/[\<>\'\"\ \ \]/'; //匹配左右尖括號、英文單雙引號、半角空格、全角空格
if(preg_match($pattern, $username)){
echo "<script>alert('Error: contain sensitive character!');history.back();</script>";
}
}
//然後在注冊頁面調用
$tmpArray = array();
$tmpArray['username'] = check($_POST['username']);
結果,我在用戶名輸入表單裡隨意輸入了一個用戶名aaa'aaa,提交後在頁面頭彈出錯誤:Warning: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 14 in D:/........
請問,這錯誤的出現的原因是什麼?我用了IE11、Firefox38都出現同樣的錯誤。最後,在我的編輯器裡,$pattern = '/[<>\'\"\ \ ]/'裡的英文單引號顯現出轉義形態,可是怎麼處理都還是那個樣子,這個又是什麼情況?
謝謝啦!
1、$tmpArray['username'] = check($_POST['username']);
函數都沒返回值,怎麼用呢_
2、php報錯關浏覽器什麼時事?前後端弄混了吧
3、
$pattern = '/[\<>\'\"\ \ \]/'
這個正則有錯誤,]代表匹配]所以才會報Compilation failed: missing terminating ] for character class 的錯誤。
最後,如果你用戶名規則不是允許中文的,最好還是用白名單而不是黑名單。