PHP銀行卡校驗函式(16-19位)
阿新 • • 發佈:2018-11-04
網上有很多校驗函式,但是在專案中我發現有一些新的銀行卡號通過不了校驗,百度上好幾個瀏覽量高的函式都不能用。試了好多函式終於發現有一個函式適用於國內的主流銀行卡號(有一些銀行沒有測到,測到的都支援)
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。