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中Date获取时间不正确怎么办
Jun 05 PHP
php 多线程上下文中安全写文件实现代码
Dec 28 PHP
php提示undefined index的几种解决方法
May 21 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
zend Framework中的Layout(模块化得布局)详解
Jun 28 PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 PHP
PHP速成大法
Jan 30 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
PHP消息队列用法实例分析
Feb 12 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
php操作access数据库的方法详解
Feb 22 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 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
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
javascript 写类方式之五
2009/07/05 Javascript
Prototype ObjectRange对象学习
2009/07/19 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python算法学习之计数排序实例
2013/12/18 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
怎样自定义一个异常类
2016/09/27 面试题
金融学专科生自我鉴定
2014/02/21 职场文书
小学生操行评语大全
2014/04/22 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
交通处罚决定书
2015/06/24 职场文书
初中思想品德教学反思
2016/02/24 职场文书
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL