joegreen0991/phonenumbers

此包已被弃用且不再维护。未建议替代包。
此包最新版本(dev-master)的许可证信息不可用。

原文 - https://github.com/davideme/libphonenumber-for-PHP

dev-master 2013-06-27 09:14 UTC

This package is not auto-updated.

Last update: 2018-05-08 10:39:42 UTC


README

我已经通过 packagist/composer 提供了此包 - 原始库 davideme/libphonenumber-for-PHP

这是什么?

PHP 库,用于解析、格式化、存储和验证国际电话号码。

功能亮点

  • 解析/格式化/验证全球所有国家和地区电话号码。
  • getNumberType - 根据号码本身获取号码类型;能够区分固定电话、移动电话、免费电话、付费电话、共享费用、VoIP和个人号码( whenever feasible)。
  • isNumberMatch - 获取两个号码可能相同的置信度。
  • getExampleNumber/getExampleNumberByType - 为所有国家和地区提供有效的示例号码,可选择需要哪种类型的示例电话号码。
  • isValidNumber - 使用长度和前缀信息对特定区域的电话号码进行完整验证。

快速示例

假设你有一个表示瑞士电话号码的字符串。这是如何将其解析/标准化为 PhoneNumber 对象的示例

$swissNumberStr = "044 668 18 00";
$phoneUtil = PhoneNumberUtil::getInstance();
try {
    $swissNumberProto = $phoneUtil->parse($swissNumberStr, "CH");
    var_dump($swissNumberProto);
} catch (NumberParseException $e) {
    echo $e;
}

到此为止,swissNumberProto 包含

object(com\google\i18n\phonenumbers\PhoneNumber)#221 (5) {
  ["countryCode":"com\google\i18n\phonenumbers\PhoneNumber":private]=>
  int(41)
  ["nationalNumber":"com\google\i18n\phonenumbers\PhoneNumber":private]=>
  int(446681800)
  ["extension":"com\google\i18n\phonenumbers\PhoneNumber":private]=>
  NULL
  ["italianLeadingZero":"com\google\i18n\phonenumbers\PhoneNumber":private]=>
  NULL
  ["rawInput":"com\google\i18n\phonenumbers\PhoneNumber":private]=>
  NULL
}

现在我们来验证该号码是否有效

$isValid = $phoneUtil->isValidNumber($swissNumberProto);//return true
var_dump($isValid);

格式化方法支持一些格式,如下所示

// Produces "+41446681800"
echo $phoneUtil->format($swissNumberProto, PhoneNumberFormat::E164) . PHP_EOL;