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 相关文章推荐
smarty+adodb+部分自定义类的php开发模式
Dec 31 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
php无限分类使用concat如何实现
Nov 05 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 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/11 PHP
php生成图片验证码
2015/06/09 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
PHP7常量数组用法分析
2016/09/26 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
[JS]点出统计器
2020/10/11 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python 通配符删除文件的实例
2018/04/24 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
基于python实现聊天室程序
2018/07/27 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
python 实现音频叠加的示例
2020/10/29 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
几道PHP的面试题
2012/05/19 面试题
Servlet方面面试题
2016/09/28 面试题
五一促销活动总结
2014/07/01 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python