2016-11-22 2 views
0

CodeIgniterのフォーム検証ライブラリを使用して、文字列が有効か無効かをチェックしたいと考えています。コールバックルールを使用した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

あなたはそれが失敗していると言いますか?コールバックが呼び出されますか? – 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

関連する問題