gmarsano/chilean-phone-tool

验证和格式化智利电话号码。

v1.0.2 2021-11-17 15:14 UTC

This package is auto-updated.

Last update: 2024-09-09 02:34:12 UTC


README

简介

一个用于处理智利🇨🇱电话号码的PHP composer包。

特性

  • 解析
  • 获取前缀
  • 验证
  • 格式化
  • 工厂

内容

安装

composer require gmarsano/chilean-phone-tool

需求

  • PHP >= 7.3

使用

use Gmarsano\ChileanPhoneTool\Phone;

$phone = Phone::parse("+56 9 87-654-321");
$phone->validate();   // true
$phone->number();     // "987654321"
$phone->fullNumber(); // "56987654321"
$phone->prefix()      // "9"
$phone->format();     // "+56 9 87-654-321"

设置一个电话号码。

parse

通常你可能想要以任何格式获取一个电话号码,检查它是否有效,并将其转换为所需的格式。如果需要设置号码,请使用parse

如果你解析一个有效的号码,你可以通过调用这些来获取号码和前缀

Phone::parse("+56 9 87-654-321")->number();
// => "987654321"

Phone::parse("+56-32-7-654-321")->prefix();
// => "32"

清理无效输入(使用quiet来防止验证异常)

Phone::parse("2 (09) 987654321")->quiet()->get();
// => "209987654321"

// yes work with integer or float, too.
Phone::parse(1.23)->quiet()->number();
// => "123"

setPhone

有时你只是想在不清理或修改它之前验证输入值是否为有效的电话号码。这时应使用setPhone

Phone::setPhone("56987654321")->quiet()->validate();
// => true

Phone::setPhone("987654321")->quiet()->validate();
// => true

Phone::setPhone("+56 9 87-654-321")->quiet()->validate();
// => false

验证

validate

使用validate来检查它是否是一个有效的号码。无效的号码将抛出一个包含原因信息的异常。

Phone::parse("+56-32-7-654-321")->validate();
// => true

Phone::parse("+56 1 87-654-321")->validate();
// Exception with message 'Invalid prefix.'

此工具的特性仅在有效的电话号码上才有意义。这就是为什么默认情况下它使用异常。但你可以使用quiet来避免这种行为,但请注意,如果你尝试获取或格式化无效的号码,你将得到原始数字或值,具体取决于情况。

errorsmessages

它们允许在使用quiet的情况下获取包含验证信息的数组。它们可能看起来像别名,但有一些细微的差别

  • 使用errors,你可以获取带有错误代码作为键的错误信息列表。
  • 使用messages,你只获取信息。
$phone = Phone::parse("+56 1 87-654-321");
$phone->quiet()->validate();
// => false

$phone->errors()
/*
=> [
     5 => "Invalid prefix.",
   ]
*/

$phone->messages()
/*
=> [
     "Invalid prefix.",
   ]
*/
错误信息

忽略前缀验证

要避免前缀验证,请使用ignorePrefix

$phone = Phone::parse("+56 1 87-654-321");
$phone->quiet()->validate();
// => false

$phone = Phone::parse("+56 1 87-654-321");
$phone->ignorePrefix()->validate();
// => true

$phone->get()
// => "187654321"

$phone->prefix()
// => "18"

fixluckyFix

尝试从原始输入设置一个有效的电话号码。

$phone = Phone::setPhone("+56 032 7-654-321");
$phone->quiet()->validate();
// => false

$phone->fix()->validate();
// => true

$phone->get();
// => "327654321"

使用getOld来获取原始值。

$phone->getOld();
// => "+56 032 7-654-321"

有时输入可能缺少圣地亚哥前缀(2)。使用luckFix来修复并尝试猜测丢失的前缀是否可以修复。

$phone = Phone::parse("+56-37-654-321");
$phone->quiet()->validate();
// => false

$phone->luckyFix()->validate();
// => true

$phone->format();
// => "+56 2 37-654-321"

$phone->errors();
/*
=> [
     3 => "Invalid phone number format.",
   ]
*/

正如你所看到的,修复后,验证可以是真实的。如果你需要检查原始值是否因为无效而被修改,那么你可以计数错误。

格式化

format

在有效的电话号码上使用format来获取标准的编号格式值。

$phone = Phone::setPhone("987654321");
$phone->quiet()->validate();
// => true

$phone->format();
// => "+56 9 87-654-321"

选择格式

将所需格式作为参数传递给format方法。

use Gmarsano\ChileanPhoneTool\Contracts\FormatterInterface;

Phone::setPhone("987654321")->quiet()
  ->format(FormatterInterface::PREFIX_FORMAT);
// => "(9) 87-654-321"

工厂

你可以使用Phone Tool生成一个有效的电话号码

Phone::factory()->make()->first();
// => "451036552"

通过给make方法提供一个计数作为参数来生成多个号码。

Phone::factory()->make(5)->all();
/*
=> [
     "523677441",
     "243584227",
     "712584943",
     "671108073",
     "633943870",
   ]
*/

你可以使用uniquecellPhonelandLineprefix修饰符来生成唯一的号码、手机、固定电话(红色固定电话)或手动设置一个有效的前缀。

Phone::factory()->cellPhone()->make()->first();
// => "973986533"

Phone::factory()->unique()->landLine()->make(3)->all();
/*
=> [
     "649800571",
     "572435282",
     "805066069",
   ]
*/

Phone::factory()->unique()->prefix(2)->make(3)->all();
/*
=> [
     "249404634",
     "250034633",
     "243960969",
   ]
*/

使用format(检查选择格式)修饰符来为数字提供所需格式。

Phone::factory()->make()->format()->first();
// => "+56 68 4-987-466"

Phone::factory()->unique()->make(3)
  ->format(FormatterInterface::PREFIX_FORMAT)
  ->all();
/*
=> [
     "(9) 76-488-717",
     "(45) 1-806-739",
     "(42) 1-444-163",
   ]
*/

// try this if you quickly need digits with country code
Phone::factory()->make(1, true)->first();
// => "56555182350"

别名

灵感来源

Freshworks Chilean Bundle

许可证

MIT许可证
版权所有(c) 2021 gmarsano