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中与数组相关的函数
Mar 22 PHP
php 方便水印和缩略图的图形类
May 21 PHP
php 执行系统命令的方法
Jul 07 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
php检测apache mod_rewrite模块是否安装的方法
Mar 14 PHP
PHP简单实现文本计数器的方法
Apr 28 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
php7 安装yar 生成docker镜像
May 09 PHP
PHP并发场景的三种解决方案代码实例
Feb 27 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
Python设计模式之观察者模式实例
2014/04/26 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
python opencv实现简易画图板
2020/08/27 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
德国帽子专家:Hutshopping
2019/11/03 全球购物
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
年度评优评先方案
2014/06/03 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
销售内勤岗位职责
2015/02/10 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书