可能重复: 如何使用PHP验证电话号码?
请任何人帮助我知道如何验证输入的字段值是否是使用php.我在sql中使用了变量$phone,datatype =varchar 10,现在我想验证用户只在该字段中输入数字。
发布于 2012-11-28 03:32:09
使用preg_match
if(preg_match('/^(NA|[0-9+-]+)$/',$str)) {
*code here*
} else {
"code here"
}发布于 2012-11-28 03:32:41
其中一种方法是使用正则表达式。在验证电话号码时,如果您接受伴随的字符并自己筛选出来(-+()),对用户来说就更容易了。
http://www.php.net/manual/en/function.preg-replace.php
$phone = preg_replace ( '/[+\\.\\(\\) ]/' , '' , $phone);一旦您这样做了,就可以检查10位数字的匹配(假设美国数字有区号),如下所示:
if(preg_match ( '/^\\d{10}$/', $phone) ) {
// Good match
}发布于 2012-11-28 03:26:18
数字能解决你的问题吗?
编辑:我的目标不是解决操作问题,只是希望给他/她指点。然而,仔细阅读这个问题会让我觉得OP并没有意识到国际化问题。她的字段有10个字符长,所以像+447970122467这样的数字(一个有效的英国移动号码)会导致失败。我将假设他们在北美,因此可以假设所有的数字都符合北美编号计划。这方面的文字说明摘自该页:
组件名称、编号、范围、注释 +1国际电联国家呼叫代码"1“也是在NANP号码之间访问长途业务的常用中继码。在NANP上下文中,数字通常没有前面的"+“字。 NPA编号计划区域代码允许范围:第一个数字为2-9,第二个和第三个数字为0-9。包括加拿大、美国、加勒比海部分地区以及一些大西洋和太平洋岛屿。区号通常用圆括号括起来。 NXX中央办公室(exchange)代码允许范围:第一个数字为2-9,第二个和第三个数字为0-9。通常被认为是订户号码的一部分。三位数的中央办公室代码分配给为其客户服务的特定CO,但可能通过重定向或转发给移动运营商和其他服务而在物理上分散。 xxxx四位数字中每一位的订户号为0-9.这个唯一的四位数号码是订户号码或站码。
这应该足以让OP开始解决他们的问题。抱歉,我的第一次反应太草率了。
https://stackoverflow.com/questions/13597255
复制相似问题