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程序设计有所帮助。