可能重复:
如何使用 PHP 验证电话号码?
谁能帮我知道如何使用php验证输入的字段值是否是电话号码...我在sql db中使用了变量$phone,datatype =varchar 10现在我想验证用户是否只输入数字场地..
可能重复:
如何使用 PHP 验证电话号码?
谁能帮我知道如何使用php验证输入的字段值是否是电话号码...我在sql db中使用了变量$phone,datatype =varchar 10现在我想验证用户是否只输入数字场地..
使用 preg_match
if(preg_match('/^(NA|[0-9+-]+)$/',$str)) {
*code here*
} else {
"code here"
}
一种方法是使用正则表达式。在验证电话号码时,如果您接受伴随字符并自己过滤掉它们(-+()),用户会更容易。
http://www.php.net/manual/en/function.preg-replace.php
$phone = preg_replace ( '/[+\\.\\(\\) ]/' , '' , $phone);
完成此操作后,可以像这样检查 10 位数字的匹配(假设带有区号的美国号码):
if(preg_match ( '/^\\d{10}$/', $phone) ) {
// Good match
}
is_numeric 能解决您的问题吗?
编辑:我的目标不是解决 OPs 问题,只是希望给他/她指点。然而,仔细阅读这个问题让我认为 OP 没有意识到国际化问题。她的字段长度为 10 个字符,因此像 +447970122467(一个有效的英国手机号码)这样的数字会导致失败。我将假设它们在北美,因此可以假设所有数字都符合北美编号计划。用文字来描述这一点,取自该页面:
组件名称 编号范围 注释
+1 国际电联国家呼叫代码“1”也是访问 NANP 号码之间长途服务的常用中继代码。在内部 NANP 上下文中,数字通常不带前导“+”
NPA 编号计划区号 允许的范围:第一个数字为 [2–9],第二个和第三个数字为 [0–9]。涵盖加拿大、美国、加勒比海的部分地区以及一些大西洋和太平洋岛屿。区号通常用括号括起来。
NXX 中心局(交换)代码 允许的范围:第一个数字为 [2–9],第二个和第三个数字为 [0–9]。通常被认为是用户号码的一部分。三位数的中心局代码分配给为其客户服务的特定 CO,但可能通过重定向或转发给移动运营商和其他服务而在物理上分散。
xxxx 用户号码 [0–9] 用于四位数字中的每一位。这个唯一的四位数字是用户号码或电台代码。`
这应该足以让 OP 开始解决他们的问题。很抱歉在我最初的回复中很简短。