rockett/za-phone

此包已被弃用,不再维护。作者建议使用 propaganistas/laravel-phone 包。

解析和验证南非电话号码。

1.0.4 2018-08-15 12:43 UTC

This package is auto-updated.

Last update: 2022-02-20 06:03:23 UTC


README

💤 此包已退役。请使用 https://github.com/Propaganistas/Laravel-Phone

GitHub release License Travis

南非电话号码的易用验证器和格式化工具。

安装

composer require rockett/za-phone

如果您使用的是 Laravel 5.5,服务提供程序(仅提供验证功能)将通过 package-discovery 自动检测。您可以通过向您的应用 composer.json 文件中添加以下内容来选择退出:

"extra": {
    "laravel": {
        "dont-discover": [
            "rockett/za-phone"
        ]
    }
},

如果您想使用验证,并且正在使用 Laravel 5.4,请将 Rockett\Toolkit\Providers\ZAPhoneServiceProvider::class 添加到您的 config/app.php 文件中的 providers 数组。

使用方法

首先,通过实时外观(无需添加到 aliases)导入类

use Facades\Rockett\Toolkit\ZAPhone;

接下来,使用 check 方法来查看号码是否有效。如果返回 false,则号码无效。否则,$phone 变量即可使用。

if (!$phone = ZAPhone::check('0125559999')) {
    // do something if the phone number is not valid
}

输入格式

您可以为电话号码使用任何格式,因为它将删除不需要的任何内容。此包的目的是根据您的需求验证和格式化号码,因此应在直接用户输入(例如表单)上使用。以下是将被接受的格式示例

+27113330000
27 11 616 0223
011 323 1000
062525 9874
+27 (11) 525 9500

最终,gobbledygook 格式(+27 11/329.6200)将被接受、删除并验证。但是,如果删除后的号码无效,则 check 将返回 false

输出格式

如果号码有效,您可以返回您选择的格式的电话号码。可用方法包括

print $phone->formatNational();
// 012 555 9999

print $phone->formatE164();
// +27125559999

print $phone->formatIntl();
// +27 12 555 9999

print $phone->formatRFC3966();
// +27-12-555-9999

您还可以使用另一个国家的退出码来格式化号码。这将在该号码前添加代码,显示从另一个国家拨打电话的方式。国家代码参数需要以 ISO 3166-1 alpha-3 格式指定。

print $phone->formatDialIn('USA');
// 011 27 125559999 from the United States
print $phone->formatDialIn('AUS');
// 0011 27 125559999 from Australia
print $phone->formatDialIn('COL');
// 00444 27 125559999 from Colombia
print $phone->formatDialIn('RUS');
// 8p10 27 125559999 from Russia

注意: p 仅表示呼叫者应在继续之前等待音调。

转换为字符串

$phone 实例转换为字符串时,它将默认为国内格式

print $phone;
// 012 555 9999

国内格式的选项

您还可以向 formatNational 方法传递两个可选参数。

第一个参数,$landlineParenthises,默认为 false,确定是否将固定电话号码括在括号内

print $phone->formatNational(true);
// (012) 555 9999

第二个参数,$hyphens,也默认为 false,确定是否使用连字符来分隔数字组。如果号码是固定电话并且 $landlineParenthises 设置为 true,则连字符将分隔号码的最后两部分。在其他所有情况下,将使用连字符来分隔所有组。

print $phone->formatNational(true, true);
// (012) 555-9999
//
print $phone->formatNational(false, true);
// 012-555-9999

获取器

偶尔,您可能需要访问数字的不同部分。您可以为此使用 numberprefixthreefour 获取器。但是请注意,numberprefix 中不会包含前导零。

print $phone->prefix;
// 12

验证

该包还提供 规则 和验证器,并且每个都允许您指定用户提供的电话号码的可选格式。

'phone_number_field': 'required|zaphone',
'phone_number_field': ['required', Rule::zaphone()],
'phone_number_field': 'required|zaphone:national',
'phone_number_field': ['required', Rule::zaphone()->format('intl')],

当使用 Rule 方法时,不要忘记 use Illuminate\Validation\Rule;。注意,format() 的参数区分大小写,接受 nationalintlE164RFC3966

说实话,由于该包的设计是为了验证可以转换为有效电话号码的任何输入,并根据您的应用需求(数据库存储等)对其进行格式化,因此强制格式并不是必需的。因此,对于大多数需求,只需简单地使用验证规则而不强制格式即可。

测试

测试由 Orchestra 的测试平台提供。要测试该包,只需导航到其目录,运行 composer install 然后运行 phpunit

需要更高级的功能?

ZA Phone,正如其名称所示,是专门为南非电话号码设计的,因此针对的是在南非环境中使用的应用。虽然其功能集相对有限,但对于大多数应用来说应该是足够的。

如果您在寻找更复杂且功能丰富的解决方案,请务必查看 Laravel Phone