使用 PHP,我如何验证电话号码是否格式正确?
简单地去除所有非数字数据似乎最简单,只留下数字。然后检查是否存在 10 位数字。
这是最好和最简单的方法吗?
使用 PHP,我如何验证电话号码是否格式正确?
简单地去除所有非数字数据似乎最简单,只留下数字。然后检查是否存在 10 位数字。
这是最好和最简单的方法吗?
最好的?不,我在这种方法中看到的问题:
够好了?很有可能,但这取决于您和您的应用程序。
您可以使用正则表达式:
$pattern_phone = "|^[0-9\+][0-9\s+\-]*$|i";
if(!preg_match($pattern_phone,$phone)){
//Somethings wrong
}
没有测试正则表达式,所以它可能不是 100% 正确的。
剥离后检查 10 位数字将检查语法但不会检查有效性。为此,您需要确定该地区/国家有哪些有效数字可用,并可能编写一个正则表达式来匹配模式。
像这样验证/过滤数据的问题通常归结为这个问题的答案:“我想要有多严格?” 然后演变成一系列“特征”问题
根据您的业务规则,这些问题的答案可能会有所不同。但要最灵活,我推荐 3 个字段来获取电话号码
所有 3 个字段都可以通过编程方式限制/仅针对数值进行过滤。然后,您可以在存储为某种可解析格式之前将它们组合起来,或者单独存储每个值。
回答某件事是否是“最好的”事情几乎是不可能的(除非您是回答自己问题的人)。
您提出它的方式,剥离所有非数字,然后检查是否有 10 个数字,可能会导致字符串出现不需要的行为,例如:
乔治·华盛顿(George Washington,1732 年 2 月 22 日 - 99 年 12 月 14 日)是美国独立战争中大陆军的指挥官,并担任美利坚合众国第一任总统。
因为剥离所有非数字将产生2217321499
10 个 fdigits 长的字符串,但我非常怀疑整个字符串是否应该被视为有效的电话号码。
你需要什么格式?您可以对此使用正则表达式。