2017-04-25 50 views
0

我已經用於校驗輸入數是否爲以下代碼:用於檢查輸入位條件語句爲8或6位

  1. 空。
  2. 是否爲數字。
  3. 是8位數字。

但不能弄清楚。如果輸入不是8位或6位數字,則假設發生錯誤。

if ($_POST['phone']==''){ 
    $has_errors=true; 
    $errors[]=__('Phone field is empty','wpestate'); 
} else if(!is_numeric($_POST['phone'])) { 
    $has_errors=true; 
    $errors[]=__('Phone number entered was not numeric','wpestate'); 
} else if(strlen($_POST['phone']) != 8) { 
    $has_errors=true; 
    $errors[]=__('The number entered was not 8 digits long','wpestate'); 
} 
+0

你正在使用哪個函數'__(...)'? –

+0

請注意,'is_numeric()'對於負數和浮點數如'-1.2'和像'1e7'這樣的字符串返回true,所以您可以改爲使用'FILTER_VALIDATE_INT'來使用'filter_input()'。 –

+0

@AlexHowansky,感謝您的提示。但是,我怎樣才能使用它這個特定的代碼? – anandmongol

回答

0

我會用preg_replace來計數數字來測試輸入。

在測試內容之前測試變量是否存在是個好主意。

if (isset($_POST['phone'])) { 
    if ($_POST['phone'] == '') { 
       $has_errors = true; 
       $errors[] = __('Phone field is empty', 'wpestate'); 
     } else { 
      $phone = preg_replace("/[^0-9]/", "", $_POST['phone']); 
      $plen = strlen($phone); 
      if ($plen != 8 && $plen != 6) { 
        $has_errors = true; 
        $errors[] = __('Invalid phone number', 'wpestate'); 
      } // end if invalid length 
     } // end if not empty 
`} // end if phone received