我正在寻找一种方法来确定电话号码是国际格式还是本地格式,以及它是否属于国际格式所属的国家/地区。如果它是本地格式,它应该提示用户输入国家代码,然后将其转换为国际格式。
示例:
00447749123123 =国际英国号码 - 重新格式化为447749123123
+447749123123 =国际英国号码 - 重新格式化为447749123123
447749123123 =国际英国号码
07749123123 =国家英国号码 - 国家/地区代码提示并重新格式化为447749123123
18775784000 =国际美国号码
8775784000 =美国国内号码 - 提示输入国家代码并重新格式化为18775784000
是否有人知道这样的脚本是否存在,或者如果不存在如何进行此操作? IT应该为尽可能多的国家(不仅仅是英国和美国)工作。
答案 0 :(得分:1)
我不认为这样的脚本或网络服务存在,几周前我研究了类似的东西。
由于各个国家/地区的电话号码不同,我认为您很难创建适用于所有国家/地区的脚本,并且可以通过不同的方式编写电话号码。
您必须对输入的电话号码进行假设。 基本上你有两种不同的方法。
我会选择第二个选项。
在您的示例中,数字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
}
由于许多国家/地区将共享相同的格式,因此无法确定国家电话号码而无需事先了解其所在的国家/地区。因此,让用户在网络表格中选择国家/地区是必要的,可以将国际代码添加到数字中。
答案 1 :(得分:1)
没有任何免费,但Neustar将是您最好的付费服务。我认为他们也提供国际号码服务,但您可能需要编写自己的API接口。另一条付费路线可能是Twilio,但我不确定他们的国际选择。我知道一些较大的SMS聚合器可能会为其产品提供此功能,但不能作为独立的API /服务。如果您正在寻找付费选项,可以尝试OpenMarket(MxTelecom for international)。只是一个想法