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作为Shell脚本语言使用
Oct 09 PHP
PHP中的cookie
Nov 26 PHP
PHP 七大优势分析
Jun 23 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
PHP运行模式的深入理解
Jun 03 PHP
WordPress后台中实现图片上传功能的实例讲解
Jan 11 PHP
php实现按天数、星期、月份查询的搜索框
May 02 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
thinkPHP通用控制器实现方法示例
Nov 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python实现排序算法解析
2018/09/08 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
管理学专业个人求职信范文
2013/09/21 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
停水通知
2015/04/16 职场文书
乒乓球比赛通知
2015/04/27 职场文书
《窃读记》教学反思
2016/02/18 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书