任何人都可以帮助我知道如何验证输入的字段值是否是使用php的电话号码... 我在sql db中使用了变量$ phone,datatype = varchar 10 现在我想验证用户只输入该字段中的数字..
答案 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
}
答案 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开始解决他们的问题。很抱歉在我最初的回复中不合适。