2011-09-02 45 views
-1

我試圖用PHP編寫一個驗證類,並遇到了阻礙。我正在使用下面的代碼來檢查一個對照定義的正則表達式模式的值,但是當我嘗試運行腳本時,我收到一條錯誤消息:正則表達式來檢查是否有有效的正則表達式在PHP

「Warning:preg_match()[function.preg-match]:Empty regular表達在C:\ WAMP \ WWW \有效\ Class.Validate.php上線109"

誰能發現我的錯誤?

public function is_regex($var, $expression, $msg) 
    { 
     if (trim($var) <> "") { 
      $Valid = (bool)preg_match($expression, $var); 
      if ($Valid == false) { 
       return $msg; 
      } 
     }  
    } 

,我用這個來調用函數

array('Type'=>'Regex','Var'=>$_POST['test'], 'Expression'=>'[A-Za-z]{1,20}$','Msg'=>'Expression does not match')  
+0

HM ..你發送這個數組作爲第一個參數? – k102

+0

問題出在你在這裏沒有顯示的'is_regex'調用代碼。 (另外,我會避免大小寫混合的數組鍵這不是很Web應用程序。) – mario

+0

什麼線'C 109:\ WAMP \ WWW \有效\ Class.Validate.php'?函數和數組之間的連接在哪裏「使用...來調用函數」? – Oswald

回答

0

據我看到的,你需要附上正則表達式到機箱字符,例如| 所以你的檢查數組會像

array('Type'=>'Regex','Var'=>$_POST['test'], 'Expression'=>'|[A-Za-z]{1,20}$|','Msg'=>'Expression does not match') 

您還可以在功能定義角色,但在這種情況下,如果你必須在正則表達式這個字符,你需要逃脫它

+0

試過你提供的例子,但沒有去。我不認爲問題在於我如何調用函數,而是函數本身的格式不正確,但是在嘗試了很多變量的單引號和雙引號變量後,我沒有找到任何可行的方法。 –

相關問題