首页 > 开发 > PHP > 正文

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

2024-05-04 23:33:13
字体:
来源:转载
供稿:网友

这篇文章主要介绍了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. 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.  
  3. $str = ''
  4.  
  5. foreacharray_reversestr_split$num ) ) as $i => $c ) $str .= ($i % 2 ? $c * 2 : $c ); 
  6.  
  7. return array_sumstr_split($str) ) % 10 == 0; 
  8.  
  9.  
  10. foreach (array('49927398716','49927398717','1234567812345678','1234567812345670'as $n
  11.  
  12. echo "$n is ", luhn_test($n) ? 'valid' : 'not valid', " 
  13. /n"; 

输出结果如下

 

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

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表