2016-11-22 60 views
0

我想使用CodeIgniter的Form Validation庫檢查字符串是否有效或無效。使用回調規則在CodeIgniter中進行字符串驗證

如果輸入字符串在此集合中有9個數字+ 1個字符:[xXvV]或字符串爲空,則認爲它是有效的。 (例如:「123456789X」,「987654321v」,「」)。我使用preg_match()實施了回調規則,但無濟於事。

設置規則在我的控制器:

$this->form_validation->set_rules('nic', 'NIC', 'trim|xss_clean|callback_checkNIC'); 

這是我的回調函數:

public function checkNIC($nic){ 
     $reg = '/^(\d\d\d\d\d\d\d\d\d)[xXvV]$/'; 

     if(preg_match($reg, $nic) || $nic == '') { 
      return TRUE; 
     } 
     else { 
      $this->form_validation->set_message('checkNIC', 'The NIC is not valid'); 
      return FALSE; 
     } 
    } 

任何想法?

+0

請再具體些。它如何不工作?任何錯誤?你在哪裏定義回調?在同一個控制器中? – sepehr

+0

我在同一個控制器中定義了回調。 – TrungHoang

+0

How do you say它是失敗的?回調是否被調用? – sepehr

回答

0

將此方法添加到您的控制器您正在進行驗證的類。或者,如果你想要把它別的地方,確保它的callable

public function checkNIC($nic) 
{ 
    $this->form_validation->set_message('checkNIC', 'The NIC is not valid'); 

    return $nic === '' || (bool) preg_match('/^\d{9}[xXvV]$/', $nic); 
} 

看一看:
https://3v4l.org/X3DhC

+0

你可以檢查'checkNIC('fdg')'和'checkNIC('123456789X')'的輸出嗎?看看:https://3v4l.org/X3DhC – sepehr