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 相关文章推荐
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
php5.3 注意事项说明
Jul 01 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
Nov 18 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
Laravel Reponse响应客户端示例详解
Sep 03 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学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Python如何重新加载模块
2020/07/29 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
表彰大会主持词
2014/03/26 职场文书
空乘英文求职信
2014/04/13 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
个人债务授权委托书
2014/10/17 职场文书
2015年材料员工作总结
2015/04/30 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python