avalontechsv / idsv
验证和格式化萨尔瓦多常见的身份号码
v1.0.0
2023-01-13 17:59 UTC
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^9.5
README
介绍
idSV 是一个用于验证萨尔瓦多常见身份号码(如DUI和NIT)的工具。
重要通知
自2021年12月17日起,DUI是自然人的有效NIT,因此任何DUI都是有效的NIT。这意味着在自然人的背景下(即有DUI的人)可以使用相同的号码进行两种验证。
此变更不影响法人实体,因此您仍应使用NIT验证它们。
当需要时,库中也有一个选项可以覆盖此功能。
安装
您可以使用composer在项目中安装idSV
composer require avalontechsv/idSV
用法
use avalontechsv\idSV\idSV; $validator = new idSV(); // DUI validation // Validate DUI in the format 00000000-0 var_dump($validator->isValidDUI('00000000-0')); // true var_dump($validator->isValidDUI('00000000-1')); // false // Validate DUI in the format 000000000 var_dump($validator->isValidDUI('000000000')); // true var_dump($validator->isValidDUI('000000001')); // false // The library will automatically trim the input. // This is useful when you are validating user input. var_dump($validator->isValidDUI(' 000000000 ')); // true // NIT validation // Validate NIT in the format 0000-000000-000-0 var_dump($validator->isValidNIT('0000-000000-000-0')); // true var_dump($validator->isValidNIT('0000-000000-000-1')); // false // Validate NIT in the format 0000000000000 var_dump($validator->isValidNIT('0000000000000')); // true var_dump($validator->isValidNIT('0000000000001')); // false // Also, you can validate NITs for natural persons // in the DUI format. var_dump($validator->isValidNIT('00000000-0')); // true var_dump($validator->isValidNIT('00000000-1')); // false // The library will automatically trim the input. // This is useful when you are validating user input. var_dump($validator->isValidNIT(' 0000000000000 ')); // true // DUI and NIT can also be null var_dump($validator->isValidDUI(null)); // false var_dump($validator->isValidNIT(null)); // false // DUI and NIT formatting // Format DUI in the format 000000000 var_dump($validator->formatDUI('000000000')); // 00000000-0 // Shorter strings will be padded with zeros var_dump($validator->formatDUI('00')); // 00000000-0 // If a DUI was already formatted, it will be returned as is var_dump($validator->formatDUI('00000000-0')); // 00000000-0 // Invalid DUIs generate an exception try { $validator->formatDUI('000000001'); } catch (\Exception $e) { echo 'Exception: ' . $e->getMessage(); } // Exception: Invalid DUI // Format NIT in the format 0000000000000 var_dump($validator->formatNIT('00000000000000')); // 0000-000000-000-0 // Shorter strings will be padded with zeros var_dump($validator->formatNIT('00')); // 0000-000000-000-0 // If a NIT was already formatted, it will be returned as is var_dump($validator->formatNIT('0000-000000-000-0')); // 0000-000000-000-0 // Valid DUIs will be formatted as DUI in the NIT formatter by default var_dump($validator->formatNIT('000000000')); // 00000000-0 // You can force the NIT formatter to disallow DUIs too var_dump($validator->formatNIT('000000000', false)); // 0000-000000-000-0 // Padding is also applied to NITs var_dump($validator->formatNIT('00', false)); // 0000-000000-000-0 // Invalid NITs generate an exception try { $validator->formatNIT('0000000000001'); } catch (\Exception $e) { echo 'Exception: ' . $e->getMessage() . '\n'; } // Exception: Invalid NIT
## Testing
You can run the tests with PHPUnit:
```bash
./vendor/bin/phpunit
或者您可以使用composer运行 test
脚本
composer test
鸣谢
- gmelendezcr 为算法和 gist 以计算DUI的校验位。用JavaScript编写。
- MauricioG 为计算NIT校验位的算法。用Visual FoxPro编写。
许可证
本软件包是开源软件,许可协议为GNU通用公共许可证v3.0。