2

可能重复:
如何使用 PHP 验证电话号码?

谁能帮我知道如何使用php验证输入的字段值是否是电话号码...我在sql db中使用了变量$phone,datatype =varchar 10现在我想验证用户是否只输入数字场地..

4

3 回答 3

0

使用 preg_match

if(preg_match('/^(NA|[0-9+-]+)$/',$str)) {
        *code here*
} else {
        "code here"
}
于 2012-11-28T03:32:09.737 回答
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

于 2012-11-28T03:32:41.513 回答
-1

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 开始解决他们的问题。很抱歉在我最初的回复中很简短。

于 2012-11-28T03:26:18.397 回答