程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> php-PHP用戶注冊調試時preg_match( )發生錯誤

php-PHP用戶注冊調試時preg_match( )發生錯誤

編輯:編程綜合問答
PHP用戶注冊調試時preg_match( )發生錯誤

在用戶名注冊時,我加入了正則表達式驗證,可是在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 的錯誤。
最後,如果你用戶名規則不是允許中文的,最好還是用白名單而不是黑名單。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved