验证电话号码

验证电话号码

问题描述:

可能重复:
A comprehensive regex for phone number validation验证电话号码

请我创造了这个功能对邮件和电话号码验证,邮寄自己的作品,BT手机自己做NT工作。

if(trim($_POST['email']) == '') { 
    $hasError = true; 
} else if (!eregi("^[A-Z0-9._%-][email protected][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']); 
} 
+0

它是尾随'$/$'?尝试改变它只是'$',看看是否有效.... – andrewsi

+0

'ereg'函数已被弃用。见['preg'](http://il.php.net/manual/en/book.pcre.php)。另外,请明确定义有效的电话号码是什么。 –

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

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

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

'+972 52 1234567'是一个有效的电话号码。 –

+0

的确如此,但我认为这个问题只接受美国的电话号码,因为没有任何处理国家代码的尝试。 –

+0

我确实希望它接受所有数字 –

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

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

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

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