当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现通过Luhn算法校验信用卡卡号是否有效

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-17 15:50:46 浏览: 评论:0 

这篇文章主要介绍了PHP实现通过Luhn算法校验信用卡卡号是否有效,实例分析了php实现Luhn算法及相关应用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法,分享给大家供大家参考,具体实现方法如下:

  1. $numbers = "49927398716 49927398717 1234567812345678 1234567812345670"; 
  2. foreach (split(' ', $numbers) as $n) 
  3.   echo "$n is ", luhnTest($n) ? 'valid' : 'not valid', '</br>'; 
  4.    
  5. function luhnTest($num) { 
  6.   $len = strlen($num); 
  7.   for ($i = $len-1; $i >= 0; $i--) { 
  8.     $ord = ord($num[$i]); 
  9.     if (($len - 1) & $i) { 
  10.       $sum += $ord; 
  11.     } else { 
  12.       $sum += $ord / 5 + (2 * $ord) % 10; 
  13.     } 
  14.   }    
  15.   return $sum % 10 == 0; 
  16. } 

运行结果

  1. 49927398716 is valid 
  2. 49927398717 is not valid 
  3. 1234567812345678 is not valid 
  4. 1234567812345670 is valid 

下面是一个更为简洁的代码:

  1. function luhn_test($num) { 
  2.     $str = ''; 
  3.     foreach( array_reverse( str_split( $num ) ) as $i => $c ) $str .= ($i % 2 ? $c * 2 : $c ); 
  4.     return array_sum( str_split($str) ) % 10 == 0; 
  5. } 
  6. foreach (array('49927398716','49927398717','1234567812345678','1234567812345670') as $n) 
  7. echo "$n is ", luhn_test($n) ? 'valid' : 'not valid', "</br>\n"; 

输出结果如下

  1. 49927398716 is valid 
  2. 49927398717 is not valid 
  3. 1234567812345678 is not valid 
  4. 1234567812345670 is valid

Tags: Luhn算法校验 PHP信用卡卡号

分享到: