如何比较Perl中的国际电话号码?

时间:2010-01-13 10:37:47

标签: perl cpan phone-number

是否有任何模块可以帮助我比较电话号码是否相等?

例如,以下三个数字相同(从英国拨号时)

+44 (0)181 1234123
00441811234123
0181 1234123

是否有perl模块可以告诉我这个?

2 个答案:

答案 0 :(得分:3)

我在CPAN上看到的最近的是Number::Phone这是一个活跃的项目,并且支持英国电话号码。它应该适用于您提供的具体示例。支持少数几个国家。

如果你有其他国家的电话号码,由于本地的格式化特性,事情会变得更加困难。

答案 1 :(得分:2)

假设您需要的代码不存在,并且您必须自己编写代码,则需要执行两项基本操作:

  1. 应用上下文。您可以在此处考虑拨号电话的位置。如果呼叫不是国际呼叫,则提供国家/地区代码;如果呼叫不是长途呼叫,则提供区号等。当然,这需要一些区域规则。

  2. 归一化。删除无意义的空格和标点符号,将国际拨号前缀(NANPA中的“011”,世界其他大部分地区的“00”,偶尔会有许多奇怪的东西)转换为标准的“+”。

  3. 在正确完成这两个步骤之后,所有实际等效数字的输入应该给出相同的输出字符串。