slwdc / nic-parser
斯里兰卡国家身份证号码验证器
v1.1.0
2020-07-05 17:08 UTC
Requires
- php-64bit: ^7.4 || ^8.0
Requires (Dev)
- ayesh/case-insensitive-array: ^1.2.0
- phpunit/phpunit: ^9.2
README
一个PHP库,用于解析、验证和生成有效的斯里兰卡国家身份证号码。
安装
您可以使用composer轻松安装此库。需要PHP 7.4或更高版本。
composer require slwdc/nic-parser
或者,您可以从github下载库,并手动包含类或将其集成到自己的自动加载器中。请参阅包含的composer.json
文件以获取PSR-4
命名空间映射。
使用方法
有关使用格式的详细信息,请参阅维基百科文章。
解析身份证号码
<?php
use SLWDC\NICParser\Parser;
require_once __DIR__ . '/../vendor/autoload.php';
/**
* Example 1
*/
$id_number = '862348594v';
$parser = new Parser($id_number);
$parser->getBirthday();// Returns a \DateTime object with the date parsed.
echo $parser->getBirthday()->format('Y-m-d'); // prints "1986-08-22"
echo $parser->getGender(); // Prints "M". M for male, F for female.
echo $parser->getSerialNumber(); // Prints "8594"
/**
* Example 2
*/
$id_number = '19935158154';
$parser = new Parser($id_number);
$parser->getBirthday();// Returns a \DateTime object with the date parsed.
echo $parser->getBirthday()->format('Y-m-d'); // prints "1993-01-15"
echo $parser->getGender(); // Prints "F". M for male, F for female.
echo $parser->getSerialNumber(); // Prints "8154"
验证身份证号码
当您使用无效的身份证号码实例化Parser
类时,该类会抛出异常。请确保在验证时始终捕获异常。
<?php
use SLWDC\NICParser\Parser;
use SLWDC\NICParser\Exception\InvalidArgumentException;
require_once __DIR__ . '/../vendor/autoload.php';
/* This is an invalid ID number because 499 here is not indicating a valid
birth date */
$id_number = '924998593v';
try {
$parser = new Parser($id_number);
}
catch (\SLWDC\NICParser\Exception\InvalidArgumentException $exception) {
echo $exception->getMessage(); // "Birthday indicator is invalid."
}
根据验证错误,您将获得不同的消息来解释情况。所有异常都将实例化为SLWDC\NICParser\Exception\InvalidArgumentException
。我写样本/填充文本的能力不强,所以请自己写一些内容。
构建NIC号码
<?php
use SLWDC\NICParser\Builder;
require_once __DIR__ . '/../vendor/autoload.php';
$birthday = new \DateTime();
$birthday->setDate(1992, 9, 16);
$birthday->setTime(0, 0);
$builder = new Builder();
$builder->setBirthday($birthday);
$builder->setGender('M'); // M for male, F for female.
$builder->setSerialNumber(25738);
echo $builder->getNumber(); // "199226025738". This is the new format.
贡献
欢迎所有贡献。如果您有任何问题,请将问题发布在Github问题队列中。对于任何PR,如果您可以添加适当的测试覆盖率,我们将非常感激。
其他实现
- Ksengine/NICParser - Python实现
谢谢。