【问题标题】:Identifying international phone numbers in string in PHP在PHP中识别字符串中的国际电话号码
【发布时间】:2011-06-15 20:35:48
【问题描述】:

我正在尝试编写一个函数,该函数将从地球上某处有效的字符串中提取有效的电话号码。这是一个真正国际化的网站,适用于在全球拥有多个地点并且每个地点的用户都可以访问它的组织。

我主要需要这个来进行数据库迁移。我从中迁移的以前的站点仅使用了一个简单的文本字段,没有说明也没有过滤。所以这导致电话字段以各种创造性的方式使用。

我正在寻找它只是为了识别字符串中的第一个电话号码,然后可能会在将结果设置为用户个人资料信息之前删除任何多余的字符。

【问题讨论】:

    标签: php regex drupal-6 phone-number


    【解决方案1】:

    Google's Phone Number Library 有一个 PHP 端口可用。

    【讨论】:

    【解决方案2】:

    你可以使用这样的东西:

    $pattern = '/([\+_\-\(\)a-z ]+)/';
    

    $pattern = '/([^0-9]+)/i';
    
    $phone = preg_replace($pattern,'', $phone);
    

    或者,使用 php 过滤器,例如:

    $phone = (int) filter_var($phone, FILTER_SANITIZE_NUMBER_INT);
    

    尽管使用过滤器时,如果允许值以“0”开头,则需要小心。

    然后,无论哪种方式,检查允许的电话号码的长度范围 ~6-12 或任何您的范围覆盖。

    【讨论】:

    • 我已将这两个都添加到我用来检测数字的模式列表中。我只是想我会让它遍历一个列表,直到找到匹配项,然后返回匹配项。谢谢大佬!
    【解决方案3】:

    首先,您需要编制一份有效电话号码格式的列表。

    其次,您需要创建正则表达式来识别每种格式。

    第三,您将对文本运行正则表达式以找到数字。

    【讨论】:

      猜你喜欢
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      相关资源
      最近更新 更多