在php中验证电话号码

时间:2012-06-21 16:42:42

标签: php

  

可能重复:
  A comprehensive regex for phone number validation

请我创建此功能用于邮件和电话号码验证,邮件自己的工作,但手机自己没有工作。

if(trim($_POST['email']) == '')  {
    $hasError = true;
} else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$",     
         trim($_POST['email']))) {
    $hasError = true;
} else {
    $email = trim($_POST['email']);
}

if(trim($_POST['phonenumber']) == '')  {
    $hasError = true;
} else if (!eregi("/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/$",      
          trim($_POST['phonenumber']))) {
    $hasError = true;
} else {
    $phonenumber= trim($_POST['phonenumber']);
}

2 个答案:

答案 0 :(得分:0)

首先,您应该使用preg_match代替eregi

除此之外,人们以各种方式输入电话号码。处理它们的最简单方法是去掉任何不是数字的东西,看看你是否有十位数:

$number = preg_replace("/\D/","",$_POST['phonenumber']);
if( strlen($number) == 10) { /* ok */ }
else { /* error */ }

答案 1 :(得分:0)

我认为更好的方法是从输入中删除所有非数字字符并检查长度是否在一定范围内。特别是如果您将这些数据存储在数据库中,那么您最终不会存储不必要的数据。

如果要允许扩展,可能需要保留x个字符。这是一个从字符串中删除所有非数字字符的功能(x除外)。

function removeNonNumeric($string) {
    return preg_replace('/[^\dx]/', '', $string)
}

当您需要输出结果时,您可以根据需要对其进行格式化。