版权声明:本文为本小白原创文章,(转载请说明出处,标明链接) 文中若有错误,敬请指正!——————编程不过是一门失传的艺术的别名,这门艺术的名字叫做“思考”。 https://blog.csdn.net/qq_32737755/article/details/83617132
网上有很多校验函数,但是在项目中我发现有一些新的银行卡号通过不了校验,百度上好几个浏览量高的函数都不能用。试了好多函数终于发现有一个函数适用于国内的主流银行卡号(有一些银行没有测到,测到的都支持)
function checkBankCard($card){
$arr_no = str_split($card);
$last_n = $arr_no[count($arr_no)-1];
krsort($arr_no);
$i = 1;
$total = 0;
foreach ($arr_no as $n){
if($i%2==0){
$ix = $n*2;
if($ix>=10){
$nx = 1 + ($ix % 10);
$total += $nx;
}else{
$total += $ix;
}
}else{
$total += $n;
}
$i++;
}
$total -= $last_n;
$total *= 9;
return $last_n == ($total%10);
}
$r = checkBankCard('银行卡号');
var_dump($r);
如果通过校验,返回true 否则返回false。