当前位置:首页 > 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(' '$numbersas $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; 

运行结果

  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.     foreacharray_reversestr_split$num ) ) as $i => $c ) $str .= ($i % 2 ? $c * 2 : $c ); 
  4.     return array_sumstr_split($str) ) % 10 == 0; 
  5. foreach (array('49927398716','49927398717','1234567812345678','1234567812345670'as $n
  6. 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信用卡卡号

分享到: