kgalanos / check-afm
这是我的包 check-afm
Requires
- php: ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- pestphp/pest: ^1.20
- spatie/ray: ^1.28
This package is auto-updated.
Last update: 2024-09-09 17:38:51 UTC
README
希腊税号验证算法。该算法来自文章 https://tatief.wordpress.com/2008/12/29/%CE%B1%CE%BB%CE%B3%CF%8C%CF%81%CE%B9%CE%B8%CE%BC%CE%BF%CF%82-%CF%84%CE%BF%CF%85-%CE%B1%CF%86%CE%BC-%CE%AD%CE%BB%CE%B5%CE%B3%CF%87%CE%BF%CF%82-%CE%BF%CF%81%CE%B8%CF%8C%CF%84%CE%B7%CF%84%CE%B1%CF%82/
算法如下
从我们要检查的9位数中,取出最后一位。这就是我们需要与下面找到的单位数相匹配的校验位。
现在我们逐个取剩余的数字,从右边开始,将每个数字乘以2的幂,这个幂是数字在这个数字中的位置。例如,最右边的是2^1,第二位是2^2,第三位是2^3等等。我们将这些结果相加,得到总和。从这个和中取11的余数,再取这个余数除以10的余数。这个最终的数字必须与我们从税号中取出的数字相同。
以税号011111111(这是最容易处理的)为例。我们取出最后一位(即1),对于剩余的数字01111111,我们应用上面提到的方法,得到
1*2^1+1*2^2+1*2^3+1*2^4+1*2^5+1*2^6+1*2^7+0*2^8
=2+4+8+16+32+64+128+0=254
这个数除以11的余数是1,这个余数除以10的余数仍然是1
因此,这个税号是正确的,因为我们取出的最后一位数字与上面的余数相同
安装
您可以通过composer安装此包
composer require kgalanos/check-afm
用法
$skeleton = new Kgalanos\CheckAfm(); echo $skeleton->isValid('011111111');
测试
composer test
变更日志
请参阅CHANGELOG了解最近更改的信息。
贡献
请参阅CONTRIBUTING了解详细信息。
安全漏洞
请查阅我们的安全策略了解如何报告安全漏洞。
致谢
许可
MIT许可(MIT)。请参阅许可文件了解详细信息。