1

我正在寻找一种方法来确定电话号码是国际格式还是本地格式,如果是国际格式,它属于哪个国家。如果它是本地格式,它应该提示用户输入国家代码,然后将其转换为国际格式。

例子:

  • 00447749123123 = 国际英国号码 - 重新格式化为 447749123123

  • +447749123123 = 国际英国号码 - 重新格式化为 447749123123

  • 447749123123 = 国际英国号码

  • 07749123123 = 国家英国号码 - 提示输入国家代码并重新格式化为 447749123123

  • 18775784000 = 国际美国号码

  • 8775784000 = 美国国家号码 - 提示输入国家代码并重新格式化为 18775784000

有谁知道这样的脚本是否存在,或者如果不知道如何去做?IT 应该适用于尽可能多的国家(不仅仅是英国和美国)。

4

2 回答 2

1

没有什么是免费的,但Neustar将是您最好的付费服务。我认为他们也提供国际号码服务,但您可能必须编写自己的 API 接口。另一个付费路线可能是Twilio,但我不确定他们的国际选择。我知道一些较大的 SMS 聚合器可能会为其产品提供此功能,但不会作为独立的 API/服务。如果您正在寻找付费选项,您可以尝试OpenMarket(国际 MxTelecom)。只是一个想法

于 2010-10-06T20:39:00.990 回答
1

我认为不存在这样的脚本或网络服务,几周前我研究了类似的东西。

由于各个国家/地区的电话号码长度不同,我认为您将很难创建一个适用于所有国家/地区的脚本,并以各种不同的方式编写电话号码。

您必须对作为输入的电话号码做出假设。基本上你有两种不同的方法。

  1. 制定仅适用于已知国内电话号码格式的刚性解决方案
  2. 制定一个灵活的解决方案,只接受易于识别的国际格式,但结果是接受任何国内格式。

我会选择第二个选项。

在您的示例中,数字 1 和 2 很容易识别为国际号码。3 号很难识别,因为它可能是国际英国号码,也可能是具有12 位国内电话号码的未知国家。

所以我会先接受选项一和二作为有效的国际号码,然后跳过三号。

<?php
$number = "00447749123123"; // remember the quotes the number must 
                            // keep leading zeros.

if (preg_match('/^(00|\+)/', $number)) {
    echo "International number";
    // parse and recognize country code.
} else {
    echo "national number";
    // identify which country
}

在事先不知道是哪个国家的情况下识别国家电话号码是不可能的,因为许多国家将共享相同的格式。因此,有必要让用户在网络表单中选择他们的国家/地区,以便将国际代码添加到数字中。

于 2010-10-06T12:11:43.587 回答