php银行卡验证

来源:互联网 发布:游戏王哪些卡好看知乎 编辑:程序博客网 时间:2024/05/07 06:53


1.实现代码如下

        /** * 验证银行卡号 * @param  string $bankCardNo 银行卡号 * @return bool             是否合法(true:合法,false:不合法) */function checkBankCard($bankCardNo){        $strlen = strlen($bankCardNo);        if($strlen < 15 || $strlen > 19){                    return false;        }        if (!preg_match("/^\d{15}$/i",$bankCardNo) && !preg_match("/^\d{16}$/i",$bankCardNo) &&         !preg_match("/^\d{17}$/i",$bankCardNo) && !preg_match("/^\d{18}$/i",$bankCardNo) &&          !preg_match("/^\d{19}$/i",$bankCardNo)) {                    return false;        }        $arr_no = str_split($bankCardNo);        $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;        $x = 10 - ($total % 10);        if($x != $last_n){                        return false;        }        return true;}