PHP Manual
/
算法

电话号码的验证和格式化

18. 06. 2021

Obsah článku

在PHP中没有简单的方法来验证和格式化电话号码,所以我写了一个简单的库,没有依赖性,但仍然可以处理这个角色。

其目的是检查电话号码的格式,或将其转换为基本的规范形式(总是有效的)。

安装

仅仅通过作曲家。

$ composer require baraja-core/phone-number

或者下载Download on GitHub软件包。

如何使用图书馆

这个工具的原理是基于格式化和验证来自用户的电话号码,或来自你无法控制的来源。

最常见的用途是纠正电话号码的格式。

$original = '+420 777123456';
$formatted = \Baraja\PhoneNumber\PhoneNumberFormatter::fix($original);
echo $original . '<br>';
echo $formatted;

该函数修正了数字的格式,并返回字符串+420 777 123 456

如果用户没有指定前缀,则假定使用+420前缀。你可以用第二个参数改变默认的偏好。

//返回: +421 777 123 456
\Baraja\PhoneNumber\PhoneNumberFormatter::fix('+420 777123456', 421);

只有当用户没有输入电话代码,而电话代码又不能被自动检测到时,才会被改写。

输入和输出格式化

输入字符串可以看起来(几乎)任何方式。内置的算法可以自动删除非有效字符(例如,有些用户在电话号码旁边写了一个备注,这将被自动删除)。 因此,你完全不必担心输入的格式问题,但输出将始终是一致的。

输出看起来总是一样的(它被规范化为规范格式)。

一般的格式是。

+420 777 123 456
| \_________/
Prefix |
National number

如果你提交了一个无效的输入(或一个不能自动纠正的输入),将抛出一个异常。

错误诱捕

如果一个数字不能被安全地规范化为基本形式,或者不存在,则抛出一个InvalidArgumentException异常。

如果你想把异常转换为布尔值,请使用内置的资产验证器。

\Baraja\PhoneNumber\PhoneNumberValidator::isValid('123'); // 假的
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('777123456'); // true
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777123456'); // true
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777 123 456'); // true
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 77 712 34 56'); // true

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
3.
Status:
All systems normal.
2024