如何验证Textfield输入的是使用php和SQL DB的移动号码

时间:2012-11-28 03:22:56

标签: php

  

可能重复:
  How to validate phone number using PHP?

任何人都可以帮助我知道如何验证输入的字段值是否是使用php的电话号码... 我在sql db中使用了变量$ phone,datatype = varchar 10 现在我想验证用户只输入该字段中的数字..

3 个答案:

答案 0 :(得分:0)

使用preg_match

if(preg_match('/^(NA|[0-9+-]+)$/',$str)) {
        *code here*
} else {
        "code here"
}

答案 1 :(得分:0)

执行此操作的一种方法是使用正则表达式。验证电话号码时,如果您接受附带的字符,并且自己过滤掉它们( - +()),则用户会更容易。

http://www.php.net/manual/en/function.preg-replace.php

$phone = preg_replace ( '/[+\\.\\(\\) ]/' , '' , $phone);

完成后,检查10位数的匹配(假设美国区号为数字)可以这样做:

if(preg_match ( '/^\\d{10}$/', $phone) ) {
    // Good match
}

http://www.php.net/manual/en/function.preg-match.php

答案 2 :(得分:-1)

is_numeric会解决您的问题吗?

编辑: 我的目标不是解决OP问题,只是希望能给出他/她的指针。然而,仔细阅读这个问题让我觉得OP没有意识到国际化问题。她的字段长10个字符,因此像+447970122467(有效的英国手机号码)这样的数字会导致失败。我将假设他们在北美,因此可以假设所有数字都与North American Numbering Plan一致。用语言来描述这个描述来自那个页面:

  

组件名称编号范围注释

     

+1 ITU国家呼叫代码“1”也是用于访问NANP号码之间的长途服务的通常中继线代码。在NANP内部上下文中,数字通常是在没有前导“+”

的情况下编写的      

NPA编号计划区号允许范围:第一个数字为[2-9],第二个和第三个数字为[0-9]。涵盖加拿大,美国,加勒比海的部分地区以及一些大西洋和太平洋岛屿。区号通常用括号括起来。

     

NXX中心局(交换)代码允许的范围:第一个数字为[2-9],第二个和第三个数字为[0-9]。通常被认为是订户号码的一部分。三位数的中央局代码分配给为其客户提供服务的特定CO,但可以通过重定向或转发到移动运营商和其他服务进行物理分散。

     

xxxx四个数字中的每一个的订户号[0-9]。这个唯一的四位数字是用户号码或电台代码。

这应该足以让OP开始解决他们的问题。很抱歉在我最初的回复中不合适。