php如何验证银行卡号,PHP效验银行卡卡号
/* 采用 Luhm 校验方法计算:
1,将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2
2,将奇位乘积的个十位全部相加,再加上所有偶数位上的数字
3,将加法和加上校验位能被 10 整除。
*/
function luhm($s) {
$n = 0;
for ($i = strlen($s); $i >= 1; $i--) {
$index=$i-1;
//偶数位
if ($i % 2==0) {
$n += $s{$index};
} else {//奇数位
$t = $s{$index} * 2;
if ($t > 9) {
$t = (int)($t/10) + $t%10;
}
$n += $t;
}
}
return ($n % 10) == 0;
}
网上盛传一个采用Luhm校验方法对银行卡卡号进行效验的函数,据笔者测试发现,该函数只能效验16位银行卡卡号,无法效验19位的银行卡卡号,能够效验19位银行卡卡号的函数经笔者整理如下:
function luhm($bankNo) {
// 奇数之和
$sumOdd = 0;
// 偶数之和
$sumEven = 0;
// 长度
$length = strlen($bankNo);
$wei = [];
for ($i = 0; $i < $length; $i++) {
$wei[$i] = substr($bankNo, $length - $i - 1, 1);// 从最末一位开始提取,每一位上的数值
}
for ($i = 0; $i < $length / 2; $i++) {
$sumOdd += $wei[2 * $i];
if(!isset($wei[2 * $i + 1])) continue;// 如果为19位卡号,要防止报Notice: Undefined offset错误
if (($wei[2 * $i + 1] * 2) > 9)
$wei[2 * $i + 1] = $wei[2 * $i + 1] * 2 - 9;
else
$wei[2 * $i + 1] *= 2;
$sumEven += $wei[2 * $i + 1];
}
if (($sumOdd + $sumEven) % 10 == 0) {
return true;
} else {
return false;
}
}
php如何验证银行卡号,PHP效验银行卡卡号相关推荐
- 银行卡三元素检测 根据姓名+身份证号+银行卡卡号验证信息是否匹配
银行卡检测api,根据姓名+身份证号+银行卡卡号验证信息是否匹配. 接口名称:银行卡检测api 接口平台:聚合数据 接口地址:http://v.juhe.cn/verifybankcard3/quer ...
- 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...
编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...
- 前端JS校验银行卡卡号和身份证号码(附ES6版方法)
1.银行卡卡号校验方法. function luhnCheck(bankno) { var lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一 ...
- Python+OpenCV 识别银行卡卡号
Python+OpenCV 识别银行卡卡号 今天尝试一下用python+OpenCV,使用模板匹配的方式做个简单地识别银行卡卡号(大部分参考网上的,自己改了一部分,代码写的有点不太好,但是思路很清晰, ...
- 银行卡卡号格式规范 每隔4为一个空格
最近涉及到一个绑定银行卡的需求,需要格式化银行卡卡号.即:每隔4为做一个空格. 一个很简单的功能,大牛请自动忽略... 做个笔记O(∩_∩)O哈! bankCardNoEditTxt.addTextC ...
- 基于Python的Opencv 自动识别银行卡卡号系统
一. 摘要 此应用功能为自动识别并获取银行卡卡号,通过导入需要识别的银行卡图片,以及跟银行卡上卡号的数字相一致的数字模型,则可以成功实现识别并获取银行卡卡号的功能.如果你对此感兴趣的话,下面将会详细介 ...
- 学习Opencv+Python之银行卡卡号识别
学习Opencv+Python之银行卡卡号识别 思路: 获取模板轮廓 获取模板中每个数字的轮廓 获取银行卡卡号轮廓 分别提取卡号中的每个数字的轮廓 对比识别 代码: # 导入工具包 from imut ...
- appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法
appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法 方法一: public static void inputComsumeInfo(WebElement ...
- 验证银行卡卡号是否符合规则
话不多说,上代码 /* * 常用信用卡卡号规则 * Issuer Identifier Card Number Length * Diner's ...
- 根据银行卡卡号判断银行
根据银行卡号判断是哪个银行的卡,依据是银行卡号的前6位数,称之为bin号. 我们把bin号转化为长整形,再把各个银行卡的bin号做成有序表.通过二分查找的方法,找到bin号在有序表的位置,然后读出银行 ...
最新文章
- 服务器邮箱备份文件在哪里,如何轻松将数据文件备份到电子邮箱?
- ccflow如何实现自由流程的?
- 数据结构 - 数组模拟一般队列
- Android中应用安装分析
- JavaScript模块化不算漫长的发展史
- 去苹果浏览器默认样式
- 卸载oracle——详细版
- error C2440: “<function-style-cast>”: 无法从“IplImage *”转换为“cv::Mat”
- 没有什么不可能!郴州女孩江梦南,从双耳失聪到清华博士!
- accept - 指示打印系统接受发往指定目标打印机的打印 任务
- java记事本教程_使用记事本开发java程序的步骤
- NetBIOS、NETBEUI、IPX/SPX
- 思科路由器OSPF配置实例
- 内网端口映射软件之80端口映射全端口映射
- angular页面间传递参数
- C语言的奇技淫巧(1-50)
- echarts地图数据过旧,通过geojson自定义经纬度地图
- pgp解密 java_Java PGP加密解密实例教程详细操作步骤
- 史上最详细的LXR安装介绍
- strncmp函数的简单用法
热门文章
- K8S重启后coredns pod无法正常运行
- EXCEL,神奇的lookup()函数
- 在线教育发展前景广阔
- 如何更好地读开源软件之一:ERD工具简介
- Lecture 008-Heuristic algorithms
- teamviewer Android 8,利用TeamViewer控制设备
- Java中继承thread类与实现Runnable接口的区别(转)
- mysql端口establish_PHP/MySQL Dev. Primer (1) Establish Env.
- 一篇文章看懂Yandex SEO:俄罗斯外贸从这里开始
- iOS 15 真机调试包 DeviceSupport