2012-05-31 28 views
5

我已經使用電話的回撥功能沒有從here驗證。在php codeigniter中的電話號碼驗證

function valid_phone_number_or_empty($value) 
{ 
    $value = trim($value); 

    if ($value == '') { 
      return TRUE; 
    } 
    else 
    { 
      if (preg_match('/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/', $value)) 
      { 
        return preg_replace('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', '($1) $2-$3', $value); 
      } 
      else 
      { 
        return FALSE; 
      } 
    } 
} 

但現在的問題是,它不會從歐洲國家和世界其他地區,其是11到13位接受電話沒有。任何人都可以爲我提供任何其他驗證方法,這對所有國家都是通用的嗎?

回答

3

請看下面的內容。 regex for international numbers。你需要檢查多個正則表達式。如果該號碼與第一個正則表達式(我們的電話號碼)不匹配,請使用國際正則表達式進行檢查。如果沒有匹配,測試失敗

+0

雅,你所提供的鏈接確實有參照國際電話驗證,感謝您的。然後我也需要更換REG -exp將國際代碼和它們的編號分開。 –

14

這總是爲我工作:

$this->form_validation->set_rules('mobile', 'Mobile Number ', 'required|regex_match[/^[0-9]{10}$/]'); //{10} for 10 digits number 
+1

這很簡單..感謝 – 2015-09-24 06:38:20

+1

是否與數字| max_length [10]相同? – Yash

+0

您的解決方案更容易替代。 $ this-> form_validation-> set_rules('mobile','Mobile Number','required | max_length [10] | min_length [10] | greater_than [0]'); 但需要一點不同的解決方案。你能幫助嗎? 是否有可能限制前10位數字中的015,016,017,018,019等3位數字? 所有我需要當輸入的第一個3位數字不匹配上面的格式驗證會產生錯誤。 謝謝。 – Shiplu

-1
$this->form_validation->set_rules('newphone','newphone', 
'required||matches[repassword]|max_length[10]|min_length[10]|xss_clean| 
callback_isphoneExist');