How to validate phone number using PHP?
本问题已经有最佳答案,请猛点这里访问。
如何使用PHP验证电话号码
以下是我找到有效的10位美国电话号码的方法。此时我假设用户想要我的内容,因此数字本身是可信的。我正在使用最终发送短信的应用程序,所以我只想要原始数字,无论如何。格式化总是可以在以后添加
1 2 3 4 5 6 7 8 | //eliminate every char except 0-9 $justNums = preg_replace("/[^0-9]/", '', $string); //eliminate leading 1 if its there if (strlen($justNums) == 11) $justNums = preg_replace("/^1/", '',$justNums); //if we have 10 digits left, it's probably valid. if (strlen($justNums) == 10) $isPhoneNum = true; |
编辑:如果有人感兴趣,我最终不得不将其移植到Java。它运行在每次按键上,所以我试着保持它相当轻:
1 2 3 4 5 6 7 8 9 10 11 12 | boolean isPhoneNum = false; if (str.length() >= 10 && str.length() <= 14 ) { //14: (###) ###-#### //eliminate every char except 0-9 str = str.replaceAll("[^0-9]",""); //remove leading 1 if it's there if (str.length() == 11) str = str.replaceAll("^1",""); isPhoneNum = str.length() == 10; } Log.d("ISPHONENUM", String.valueOf(isPhoneNum)); |
由于电话号码必须符合模式,因此您可以使用正则表达式将输入的电话号码与您在regexp中定义的模式相匹配。
php同时具有ereg和preg_match()函数。我建议使用preg_match(),因为这种正则表达式的文档更多。
一个例子
1 2 3 4 5 | $phone = '000-0000-0000'; if(preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone)) { // $phone is valid } |
我在很大程度上取决于您希望支持的数字格式,以及您希望强制执行数字分组,使用空格和其他分隔符等的严格程度....
看看这个类似的问题,以获得一些想法。
然后是E.164,这是ITU-T的编号标准建议