2017-04-25 45 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