当前位置: 首页 > 编程笔记 >

PHP实现通过Luhn算法校验信用卡卡号是否有效

丌官积厚
2023-03-14
本文向大家介绍PHP实现通过Luhn算法校验信用卡卡号是否有效,包括了PHP实现通过Luhn算法校验信用卡卡号是否有效的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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程序设计有所帮助。

 类似资料:
  • 本文向大家介绍Go语言通过Luhn算法验证信用卡卡号是否有效的方法,包括了Go语言通过Luhn算法验证信用卡卡号是否有效的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言通过Luhn算法验证信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下: 输出结果 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍PHP验证信用卡卡号是否正确函数,包括了PHP验证信用卡卡号是否正确函数的使用技巧和注意事项,需要的朋友参考一下 可以使用以下PHP函数,验证一个卡号是否是信用卡:

  • 我尝试使用Luhn算法检查信用卡的验证,该算法的工作步骤如下: 2*2=4 4*2=8 1*2=2 4*2=8 现在将步骤1中的所有个位数相加。 4+4+8+2+3+1+7+8=37 简单地说,我的程序总是对我输入的所有内容显示有效。即使它是一个有效的数字并且sumOfOddPlace和sumOfDoubleEvenPlace方法的结果等于零。 不胜感激。

  • 我试图用JAVA开发一个应用程序,它将检查用户输入的信用卡号是否有效。 下面是检查模数10的步骤: 步骤1:从右到左每秒数字加倍。如果一个数字的倍增导致一个两位数,则将这两个数字相加得到一个个位数。 步骤4:求和步骤2和步骤3的结果 步骤5:如果步骤4的结果可被10整除,则卡号有效;否则无效。在这种情况下,卡号无效--因为75不能被10整除。 到目前为止,我的问题是,我尝试的每一个卡号(使用有效的

  • 我试图创建一个方法来验证信用卡号,但我们必须将其作为字符串处理 1954年,IBM的Hans Luhn提出了一种验证信用卡号码的算法。该算法有助于确定是否正确输入了卡号或扫描仪是否正确扫描了信用卡。几乎所有的信用卡号码都是根据这种有效性检查生成的,通常称为Luhn检查或模数10检查,可以描述如下。为了说明,请考虑卡号4388576018402625。 从右到左每秒数字加倍。如果一个数字的倍增导致一

  • 本文向大家介绍PHP随机生成信用卡卡号的方法,包括了PHP随机生成信用卡卡号的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP随机生成信用卡卡号的方法。分享给大家供大家参考。具体分析如下: 这段PHP代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负。 希望本文所述对大家的php程序设计有所帮助。