【问题标题】:Validating any phone number in php [duplicate]验证php中的任何电话号码[重复]
【发布时间】:2014-04-10 14:51:25
【问题描述】:

我需要帮助来验证各种格式的电话号码

有效格式:

+111 1 11111111
+11 1111111
1111111
(+111) (11) 1111111

等等,格式为:

  • 您只能在开头使用一次“+”号。可以领导一个
  • 开闭括号只是开头。你不能拥有更多
  • 总共超过 15 个数字。总数不能少于 8 个数字。

有这个:

if(strlen($buff) < 8)
    return false;

$buff = trim(preg_replace('/\s+/', ' ', $buff));

if(preg_match('/^\(\d\) \d \d$/', $buff))
    return $buff;

return false;

谢谢。

【问题讨论】:

  • 对这类问题的常见回答是“除非万不得已,否则不要这样做”。大多数情况下,项目所有者认为他们需要它,但不知道当某人拥有一个不符合该模式的真实电话号码,或者当某人合法地不想提供一个时,会造成多大的挫败感。
  • (但是,如果你真的需要,正则表达式是最好的选择)。

标签: php regex validation preg-match phone-number


【解决方案1】:

智能手机策略:

  1. 删除所有非数字字符,但不删除+
  2. 如果是+,则将第一个符号替换为00
  3. 将前导 000 替换为 00
  4. 可能匹配country code
  5. 检查xy之间的长度

你甚至不需要正则表达式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多