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实现的功能是显示8条基色色带
Oct 09 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
May 26 PHP
php 学习资料零碎东西
Dec 04 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
微信API接口大全
Apr 15 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 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 图像函数大举例(非原创)
2009/06/20 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
探讨php中header的用法详解
2013/06/07 PHP
php二维数组排序详解
2013/11/06 PHP
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
javascript 鼠标拖动图标技术
2010/02/07 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
vue实现简单瀑布流布局
2020/05/28 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
python中函数默认值使用注意点详解
2016/06/01 Python
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python实现控制COM口的示例
2019/07/03 Python
Python循环结构的应用场景详解
2019/07/11 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python 代码调试技巧示例代码
2020/08/11 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
利用python爬取有道词典的方法
2020/12/08 Python
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
个性与发展自我评价
2015/03/06 职场文书
入党培养人考察意见
2015/06/08 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书