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 相关文章推荐
PHP集成FCK的函数代码
Sep 27 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
Laravel框架使用Redis的方法详解
May 30 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 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
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
vue中activated的用法
2021/01/03 Vue.js
python实现汉诺塔方法汇总
2016/07/25 Python
python url 参数修改方法
2018/12/26 Python
python实现图书借阅系统
2019/02/20 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
python 实现屏幕录制示例
2019/12/23 Python
python实现翻译word表格小程序
2020/02/27 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
应用数学自荐书范文
2013/11/24 职场文书
实习老师离校感言
2014/02/03 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
新兵入伍心得体会
2014/09/04 职场文书
北京爱情故事观后感
2015/06/12 职场文书
紧急迫降观后感
2015/06/15 职场文书
财务管理制度范本
2015/08/04 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
python中取整数的几种方法
2021/11/07 Python