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


Posted in PHP onMarch 23, 2015

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

$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";
foreach (split(' ', $numbers) as $n)
  echo "$n is ", luhnTest($n) ? 'valid' : 'not valid', '</br>';
 
function luhnTest($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;
}

运行结果

49927398716 is valid
49927398717 is not valid
1234567812345678 is not valid
1234567812345670 is valid

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

function luhn_test($num) {

    $str = '';

    foreach( array_reverse( str_split( $num ) ) as $i => $c ) $str .= ($i % 2 ? $c * 2 : $c );

    return array_sum( str_split($str) ) % 10 == 0;

}

foreach (array('49927398716','49927398717','1234567812345678','1234567812345670') as $n)

echo "$n is ", luhn_test($n) ? 'valid' : 'not valid', "</br>\n";

输出结果如下

49927398716 is valid
49927398717 is not valid
1234567812345678 is not valid
1234567812345670 is valid

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

PHP 相关文章推荐
实用函数5
Nov 08 PHP
php购物车实现代码
Oct 10 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
CI框架表单验证实例详解
Nov 21 PHP
PHP微商城开源代码实例
Mar 27 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 #PHP
php实现约瑟夫问题的方法小结
Mar 23 #PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 #PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 #PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 #PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 #PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 #PHP
You might like
用文本文件制作留言板提示(下)
2006/10/09 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
python super的使用方法及实例详解
2019/09/25 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
英国网上超市:Ocado
2020/03/05 全球购物
初一科学教学反思
2014/01/27 职场文书
毕业设计说明书
2014/05/07 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
检讨书怎么写
2015/01/23 职场文书
医院志愿者活动总结
2015/05/06 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
Hive日期格式转换方法总结
2022/06/25 数据库