Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP验证电话号码?_Php_Regex - Fatal编程技术网

如何使用PHP验证电话号码?

如何使用PHP验证电话号码?,php,regex,Php,Regex,如何使用php验证电话号码由于电话号码必须符合模式,您可以使用正则表达式将输入的电话号码与您在regexp中定义的模式进行匹配 php同时具有ereg和preg_match()函数。我建议使用preg_match(),因为有更多关于这种风格的正则表达式的文档 一个例子 $phone = '000-0000-0000'; if(preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone)) { // $phone is valid } 我在很大程

如何使用php验证电话号码由于电话号码必须符合模式,您可以使用正则表达式将输入的电话号码与您在regexp中定义的模式进行匹配

php同时具有ereg和preg_match()函数。我建议使用preg_match(),因为有更多关于这种风格的正则表达式的文档

一个例子

$phone = '000-0000-0000';

if(preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone)) {
  // $phone is valid
}

我在很大程度上取决于您希望支持的数字格式,以及您希望强制数字分组的严格程度,空格和其他分隔符的使用等等

看一看,得到一些想法


然后是一个编号标准建议,来自

以下是我如何找到有效的10位美国电话号码。在这一点上,我假设用户想要我的内容,所以数字本身是可信的。我使用的应用程序最终会发送短信,所以不管发生什么,我只想要原始数字。格式设置始终可以在以后添加

//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。每次击键时它都会运行,所以我尽量让它保持相当轻:

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));
boolean isPhoneNum=false;

如果(str.length()>=10&&str.length()请定义一个电话号码的有效性是什么?你错过了其他行星。在我的国家,它们没有。另外可能有一个国际前缀。或者一个扩展名。根据国家的不同,数字组之间会有空格、点或破折号。因此:验证取决于文化,并不像你想象的那么简单。这是澳大利亚的pho吗ne号码,一个英国号码,一个国际号码,等等?验证来自世界各地的电话号码会比电子邮件验证打开更多的蠕虫-我认为我从来没有见过这样做100%无误。最好的解决方案是使用libphonenumber,这是谷歌的libphonenumber的一个端口,用于PHP和在他们所在地区的公司周围放括号的人de?(202)555 1212强制一个特定的格式化约定是疯狂的。您还需要处理国际拨号前缀。在PrGGL匹配的中间,这应该是{ 3 },对不对?{{ }}不是{}}。。至少对于美国电话号码。这不是一个完整的电话号码正则表达式。有几十种方法可以格式化电话号码,特别是包括国际号码。根据他们的工作内容,他们可能不需要国际支持。如果输入的号码是+1981878978@Bugfixer仅当长度为h是11。我们可以对其进行一些修改。感谢您直接回答。