设计代码/luhn算法

Luhn算法是一种简单的校验公式,用于验证各种识别号码,例如信用卡号码、IMEI号码等。本文档概述了PHP中Luhn算法的实现,包括示例和用例。

v1.0.1 2024-07-20 19:02 UTC

This package is auto-updated.

Last update: 2024-09-30 05:38:37 UTC


README

Latest Version on Packagist Tests Total Downloads

Luhn算法是一种简单的校验公式,用于验证各种识别号码,例如信用卡号码、IMEI号码等。本文档概述了PHP中Luhn算法的实现,包括示例和用例。

安装

您可以通过composer安装此包

composer require designbycode/luhn-algorithm

用法

验证值

要使用Luhn算法验证值,请创建一个LuhnAlgorithm类的实例并调用isValid方法

$luhn = new LuhnAlgorithm();
$isValid = $luhn->isValid('79927398713'); // returns true

isValid方法在值有效时返回true,否则返回false。

生成校验位

要为给定值生成校验位,请调用generate方法

$luhn = new LuhnAlgorithm();
$generatedCheckDigit = $luhn->generate('7992739871'); // returns '79927398713'

generate方法返回包含校验位的生成值。

移除校验位

要从给定值中移除校验位,请调用withoutDigit方法

$luhn = new LuhnAlgorithm();
$valueWithoutDigit = $luhn->withoutDigit('79927398713'); // returns '7992739871'

withoutDigit方法返回不含校验位的值。

验证并建议校验位

要验证值并在无效时建议正确的校验位,请调用validateAndSuggest方法

$luhn = new LuhnAlgorithm();
$result = $luhn->validateAndSuggest('79927398712'); // returns ['isValid' => false, 'uggestedDigit' => '3']

validateAndSuggest方法返回包含isValid和suggestedDigit值的数组。

用例

信用卡验证

Luhn算法通常用于验证信用卡号码。您可以使用isValid方法检查信用卡号码是否有效

$luhn = new LuhnAlgorithm();
$isValid = $luhn->isValid('4242424242424242'); // returns true

IMEI号码验证

Luhn算法也可以用于验证IMEI号码。您可以使用isValid方法检查IMEI号码是否有效

$luhn = new LuhnAlgorithm();
$isValid = $luhn->isValid('352656091234567'); // returns true

生成ID的校验位

您可以使用generate方法为各种识别号码生成校验位,例如客户ID或产品代码

$luhn = new LuhnAlgorithm();
$generatedCheckDigit = $luhn->generate('CUSTOMER1234'); // returns 'CUSTOMER12345'

错误处理

Luhn算法实现如果输入值空或无效则抛出InvalidArgumentException。您可以捕获此异常以处理错误

try {
    $luhn = new LuhnAlgorithm();
    $luhn->isValid('');
} catch (InvalidArgumentException $e) {
    echo 'Error: '. $e->getMessage();
}

结论

PHP中Luhn算法的实现提供了一种简单高效的方法来验证和生成各种识别号码的校验位。通过遵循本文档,您可以轻松地将Luhn算法集成到PHP应用程序中。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅我们的安全策略

鸣谢

许可协议

MIT许可协议(MIT)。有关更多信息,请参阅许可文件