giggsey / libphonenumber-for-php-lite
giggsey/libphonenumber-for-php 的轻量版,这是一个 PHP 版本的 Google 的 libphonenumber
Requires
- php: ^8.1
- symfony/polyfill-mbstring: ^1.17
Requires (Dev)
- ext-dom: *
- friendsofphp/php-cs-fixer: ^3.12
- infection/infection: ^0.28
- pear/pear-core-minimal: ^1.10.11
- pear/pear_exception: ^1.0.2
- pear/versioncontrol_git: ^0.7
- phing/phing: ^2.17.4
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.8
- phpstan/phpstan-phpunit: ^1.2
- phpunit/phpunit: ^10.5
- symfony/console: ^6.0
- symfony/var-exporter: ^6.0
Suggests
- giggsey/libphonenumber-for-php: Use libphonenumber-for-php for geocoding, carriers, timezones and matching
Conflicts
- dev-main
- 8.13.45
- 8.13.44
- 8.13.43
- 8.13.42
- 8.13.41
- 8.13.40
- 8.13.39
- 8.13.38
- 8.13.37
- 8.13.36
- 8.13.35
- 8.13.34
- 8.13.33
- 8.13.32
- 8.13.31
- 8.13.30
- 8.13.29
- 8.13.28
- 8.13.27
- 8.13.26
- 8.13.25
- 8.13.24
- 8.13.23
- 8.13.22
- 8.13.21
- 8.13.20
- 8.13.19
- 8.13.18
- 8.13.17
- 8.13.16
- 8.13.15
- 8.13.14
- 8.13.13
- 8.13.12
- 8.13.11
- 8.13.10
- 8.13.9
- 8.13.8
- 8.13.7
- 8.13.6
- 8.13.5
- 8.13.4
- 8.13.3
- 8.13.2
- 8.13.1
- 8.13.0
- dev-upstream-8.13.45
This package is auto-updated.
Last update: 2024-09-06 11:26:44 UTC
README
这是什么?
这是一个用于解析、格式化、存储和验证国际电话号码的 PHP 库。该库基于 Google 的 libphonenumber。
这是一个仅包含核心电话号码工具的轻量版。要充分利用包括地理位置、运营商信息和短号码信息在内的库,请使用 giggsey/libphonenumber-for-php
安装
支持 PHP 8.1 及以上版本。
需要 PECL mbstring 扩展。
建议使用 composer 安装库。
$ composer require giggsey/libphonenumber-for-php-lite
您还可以使用任何其他符合 PSR-4 的自动加载器。
PHP 版本策略
此库将仅使用 支持的 PHP 版本 进行更新。目前,主要的 giggsey/libphonenumber-for-php 库支持较旧的 PHP 版本。
文档
功能亮点
- 为世界上所有国家和地区的所有国家和地区解析/格式化/验证电话号码。
getNumberType
- 根据号码本身获取号码类型;能够区分固定电话、移动电话、免费电话、付费电话、共享成本、VoIP 和个人号码(在可行的情况下)。isNumberMatch
- 获取两个号码可能相同的置信度水平。getExampleNumber
/getExampleNumberByType
- 为所有国家和地区提供有效的示例号码,并提供指定所需示例电话号码类型的选项。isValidNumber
- 使用长度和前缀信息对地区电话号码进行完整验证。
版本控制
此库将尝试遵循与 Google 相同的版本号。在需要的情况下,可能会有额外的发布来修复不能等到 Google 下一个版本发布前的关键问题。
这意味着此项目可能不会遵循 语义版本化,而是遵循 Google 的版本策略。因此,主要版本号的变化实际上可能不包含任何向后不兼容的更改。请阅读此类发布的相关发布说明。
Google 尝试根据其 版本指南 中的规定来发布其版本。
快速示例
假设您有一个来自瑞士的电话号码字符串。这是如何将其解析/规范为 PhoneNumber 对象的示例
$swissNumberStr = "044 668 18 00"; $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); try { $swissNumberProto = $phoneUtil->parse($swissNumberStr, "CH"); var_dump($swissNumberProto); } catch (\libphonenumber\NumberParseException $e) { var_dump($e); }
此时,swissNumberProto 包含
class libphonenumber\PhoneNumber#9 (7) {
private $countryCode =>
int(41)
private $nationalNumber =>
double(446681800)
private $extension =>
NULL
private $italianLeadingZero =>
NULL
private $rawInput =>
NULL
private $countryCodeSource =>
NULL
private $preferredDomesticCarrierCode =>
NULL
}
现在让我们验证该号码是否有效
$isValid = $phoneUtil->isValidNumber($swissNumberProto); var_dump($isValid); // true
格式化方法支持一些格式,如下所示
// Produces "+41446681800" echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::E164); // Produces "044 668 18 00" echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::NATIONAL); // Produces "+41 44 668 18 00" echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::INTERNATIONAL);
您还可以选择以其他国家或地区拨打该号码的方式格式化该号码
// Produces "011 41 44 668 1800", the number when it is dialled in the United States. echo $phoneUtil->formatOutOfCountryCallingNumber($swissNumberProto, "US"); // Produces "00 41 44 668 18 00", the number when it is dialled in Great Britain. echo $phoneUtil->formatOutOfCountryCallingNumber($swissNumberProto, "GB");
常见问题解答
无效号码有问题吗?
本库使用来自谷歌的libphonenumber的电话号码元数据。如果本库按预期工作,它应该提供与谷歌项目Java版本相同的结果。
如果您认为某个电话号码返回的结果不正确,首先通过他们的libphonenumber在线演示在线演示进行测试。如果返回的结果与本项目相同,并且您认为有误,请将问题作为Issue提交给libphonenumber项目。
如果谷歌的在线演示与libphonenumber-for-php演示返回不同的结果,请在此项目的giggsey/libphonenumber-for-php上提出Issue。
如果giggsey/libphonenumber-for-php与本库不同,请在此提出issue。
生成数据
生成数据通常不需要,因为这个存储库通常总是有最新的元数据。
如果需要生成数据,可以通过Phing提供的命令来执行。确保已安装所有dev composer依赖项,然后运行
$ vendor/bin/phing compile
此编译任务将根据METADATA-VERSION.php中指定的版本克隆libphonenumber项目。