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自动适应范围的分页代码
Aug 05 PHP
php 阴历-农历-转换类代码
Jan 16 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
php判断是否为json格式的方法
Mar 04 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
PHP导入导出Excel代码
Jul 07 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
php使用json-schema模块实现json校验示例
Sep 28 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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 远程关机操作的代码
2008/12/05 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
python开发之str.format()用法实例分析
2016/02/22 Python
简述Python中的进程、线程、协程
2016/03/18 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
最新的大学生找工作自我评价
2013/09/29 职场文书
教师考核材料
2014/05/21 职场文书
美食节策划方案
2014/05/26 职场文书
基层党组织整改方案
2014/10/25 职场文书
教师年终个人总结
2015/02/11 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
大学入学感言
2015/08/01 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
Python使用DFA算法过滤内容敏感词
2022/04/22 Python