2013-02-28 50 views
0

我正在使用codeigniter驗證庫...對於國際編號,我試圖接受一個數字15位數..也空白空間shud被允許..但下面不起作用的某種原因。 ..它不接受空白......國際電話號碼驗證與空白

  if(isset($data['perfume_int_contact'])) 
      { 
      //$this->form_validation->set_rules('phone_int_area_code','Contact Phone Number','trim|required|numeric'); 

      $this->form_validation->set_rules('phone_int_first','Contact Phone Number','trim|required|numeric');       

我shud能夠像進入:1234 1234 1234 45678 我應該讓我自己的驗證類只爲這?或者我可以在set_rules中使用它做一個回調函數..?或者創建一個我自己的正則表達式?任何輸入讚賞

回答

1
if (isset($data['perfume_int_contact'])) { 
    $this->form_validation->set_rules('phone_int_first', 'Contact Phone Number', 'trim|numeric|required|callback_phone_check'); 
} 

function phone_check($phone_number) 
{ 
    $regex = '/^\d{3}\s\d{3}\s\d{4}\s\d{3}$/'; // validates 123 123 1234 123 
    if (!preg_match($regex, $phone_number)) { 
     $this->form_validation->set_message('phone_check', 'Phone Number not valid.'); 
     return false; 
    } 
    return true; 
} 
+0

由於這是一個真正的好東西,對於一些初學者CI像我這樣...三江源 – ricardo 2013-02-28 04:23:58

+0

只是一個小問題.../im'是什麼意思?什麼是im? – ricardo 2013-02-28 04:34:34

+0

@ricardo'i' = ignorecase和'm' =多行。你可以使用'/^\ d {3} \ s \ d {3} \ s \ d {4} \ s \ d {3} $ /' – 2013-02-28 04:44:10

1

//表單驗證規則

$this->form_validation->set_rules('phone_int_first', 'Contact Phone Number', 'trim|required|max_length[15]|callback_checkPhone'); 

//回調函數

function checkPhone($phoneNumber) { 
    $output = preg_match('/[^0-9\s]/', $phoneNumber); 
    if (empty($output)) { 
     return TRUE; 
    } else { 
     $this->form_validation->set_message('checkPhone', 'This phone number conatins only numbers & white space'); 
     return FALSE; 
    } 
    } 
+0

謝謝,但不知怎的regaex不工作..如果我輸入例如:123 123 1234 123仍給出錯誤.. – ricardo 2013-02-28 04:23:20