PHP实现通过Luhn算法校验信用卡卡号是否有效
本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下:
$numbers="499273987164992739871712345678123456781234567812345670"; foreach(split('',$numbers)as$n) echo"$nis",luhnTest($n)?'valid':'notvalid','</br>'; functionluhnTest($num){ $len=strlen($num); for($i=$len-1;$i>=0;$i--){ $ord=ord($num[$i]); if(($len-1)&$i){ $sum+=$ord; }else{ $sum+=$ord/5+(2*$ord)%10; } } return$sum%10==0; }
运行结果
49927398716isvalid 49927398717isnotvalid 1234567812345678isnotvalid 1234567812345670isvalid
下面是一个更为简洁的代码:
functionluhn_test($num){ $str=''; foreach(array_reverse(str_split($num))as$i=>$c)$str.=($i%2?$c*2:$c); returnarray_sum(str_split($str))%10==0; } foreach(array('49927398716','49927398717','1234567812345678','1234567812345670')as$n) echo"$nis",luhn_test($n)?'valid':'notvalid',"</br>\n";
输出结果如下
49927398716isvalid 49927398717isnotvalid 1234567812345678isnotvalid 1234567812345670isvalid
希望本文所述对大家的php程序设计有所帮助。