验证电话号码
可能重复:
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']);
}
首先,你应该使用preg_match
代替eregi
。
除此之外,人们以各种方式输入电话号码。处理它们的最简单方法是去掉任何不是一个数字,看看你是否有十位:
$number = preg_replace("/\D/","",$_POST['phonenumber']);
if(strlen($number) == 10) { /* ok */ }
else { /* error */ }
'+972 52 1234567'是一个有效的电话号码。 –
的确如此,但我认为这个问题只接受美国的电话号码,因为没有任何处理国家代码的尝试。 –
我确实希望它接受所有数字 –
我认为更好的方式来做到这一点。将去除所有非数字字符从输入并检查长度是否在一定范围内。特别是如果您将这些数据存储在数据库中,那么最终不会存储不必要的数据。
如果您想允许扩展名,您可能想要将x
字符留在中。这是一个删除字符串中所有非数字字符的功能(x
除外)。
function removeNonNumeric($string) {
return preg_replace('/[^\dx]/', '', $string)
}
当您需要输出结果时,您可以根据需要进行格式化。
它是尾随'$/$'?尝试改变它只是'$',看看是否有效.... – andrewsi
'ereg'函数已被弃用。见['preg'](http://il.php.net/manual/en/book.pcre.php)。另外,请明确定义有效的电话号码是什么。 –