验证信用卡号

问题描述

需要一些帮助,我已经完成了,但无法正常显示或工作。使用 str_replace,假设获取实际的信用卡号并从中删除 -。我有那部分,但是当我创建一个嵌套的 if 语句并使用 is_numeric 进行验证时,它显示“这是一个无效的卡号”;当然如果我把它写成 is_numeric($CreditNumber)) 它也会打印出信用卡号和回声。

另外,我注意到一件事。我将此文件上传到我们的班级服务器,它显示了信用卡号,但它显示了两次,而当我使用 XAMPP 时,它根本不显示。

有什么指点吗?这是代码

  <?php 

$CreditCard = array ("","8910-1234-5678-6543","OOOO-9123-4567-0123");

foreach ($CreditCard as $CreditNumber) {
    if(empty($CreditNumber)) {
        echo "Invalid Card Number <br/>";
    } else {
        $CreditNumber = str_replace("-","",$CreditCard[1]);

        echo $CreditNumber;
        echo "<br/>";
        if (is_numeric()) {
            echo "This is an invalid Card Number";
        } else {
            echo $CreditNumber; //This shows the credit card number without the dashes
        }
    }
}

?>

编辑:

我已经完成了,它在最后显示了正确的数字,但出于某种奇怪的原因,它与 16 位数字相呼应了两次

    <?php 

$CreditCard = array ("",$CreditCard[1]);

        //echo $CreditNumber;
        //echo "<br/>";
        if (is_numeric($CreditCard)) {
            echo "This is an invalid Card Number";
        } else {
            echo $CreditNumber; //This shows the credit card number without the dashes
        }
    }
}

?>

解决方法

正则表达式在这里很有用:

$CreditCard = array("","8910-1234-5678-6543","OOOO-9123-4567-0123");

foreach ($CreditCard as $CreditNumber) {
    if (preg_match("/^\d{4}-\d{4}-\d{4}-\d{4}$/",$CreditNumber)) {
        echo "VALID:   " . $CreditNumber . "\n";
    }
    else {
        echo "INVALID: " . $CreditNumber . "\n";
    }
}

打印:

INVALID: 
VALID:   8910-1234-5678-6543
INVALID: OOOO-9123-4567-0123

请注意,如果您希望正则表达式模式验证特定供应商卡(例如 Amex、Mastercard、Visa 等),请使用参考 such as this one

,

在您的循环中,您覆盖了 $CreditCard,因此您无法在之后显示原始格式。您可以使用一个简短的函数在作用域块中进行测试:

function isCreditNumber($creditNumber) {
    if (empty($creditNumber)) {
        return false;
    }
    $num = str_replace("-","",$creditNumber);
    if (! is_numeric($num)) {
        return false;
    }
    return true;
}

$CreditCard = ["","OOOO-9123-4567-0123"];

foreach ($CreditCard as $CreditNumber) {
    if (! isCreditNumber($CreditNumber)) {
        echo "Invalid Card Number <br/>";
    }
    else {
        echo $CreditNumber . " is valid<br>";
    }
}

输出:

Invalid Card Number
8910-1234-5678-6543 is valid
Invalid Card Number

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...