slwdc/nic-parser

斯里兰卡国家身份证号码验证器

v1.1.0 2020-07-05 17:08 UTC

This package is auto-updated.

Last update: 2024-08-29 04:31:26 UTC


README

一个PHP库,用于解析、验证和生成有效的斯里兰卡国家身份证号码。

Latest Stable Version License Scrutinizer Code Quality Build Status codecov SensioLabsInsight CI Too many badges

安装

您可以使用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,如果您可以添加适当的测试覆盖率,我们将非常感激。

其他实现

谢谢。