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 sprintf()函数让你的sql操作更安全
Jul 23 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
php之XML转数组函数的详解
Jun 07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
Yii框架getter与setter方法功能与用法分析
Oct 22 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
php session的应用详细介绍
2017/03/22 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
Python回调函数用法实例详解
2015/07/02 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
python批量修改ssh密码的实现
2019/08/08 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
python制作抽奖程序代码详解
2021/01/15 Python
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
决定成败的关键——创业计划书
2014/01/24 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
迎新年主持词
2015/07/06 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js