我是php的新手,阅读了几本php书籍,还有一些教程。 我似乎无法让这个PHP验证项目工作写。它似乎没有摆脱任何空格或破折号。不知道我做错了什么。
<html>
<body>
<h1>Validate Credit Card</h1><hr />
<form action="ValidateCreditCard.php" method="get" encytype="application/x-www-form -urlencoded">
<p><input type="text" name="ccnumber" size="20" value="<?php if(!empty($_GET['ccnumber'])) echo $_GET['ccnumber'] ?>" /></p>
<p><input type="submit" value="Validate Credit Card" />
</form><hr />
<?php
if (!isset($_GET['ccnumber']))
echo "<p>Enter your credit card number.</p>";
else{
$Payment = $_GET['ccnumber'];
$ValidPayment = str_replace("_", "", $Payment);
$ValidPayment = str_replace("_", "", $ValidPayment);
if (!is_numberic($ValidPayment))
echo "<p>You did not enter a valid credit card number!</p>";
else
echo "<p>Your credit card number is $ValidPayment.</p>";
}
?>
</body>
</html>
答案 0 :(得分:4)
您只是尝试删除下划线(_
)并且您正在执行两次。
试试这个:
$Payment = preg_replace("/[^0-9]/","",$_GET['ccnumber']);
// do stuff with $Payment value, which is now only numbers
答案 1 :(得分:3)
$ValidPayment = preg_replace( '/\D/', '', $_GET['ccnumber'] );
这将替换任何非数字的东西
答案 2 :(得分:0)
所有信用卡号码都会实施验证数字,以确定信用卡号是有效还是用户输入错误。它通常包含与算术运算和模运算相关联的特定数字,以将输出空间缩小为单个数字。一个例子是添加数字并对每3个数字执行模数(10) - 运算。据推测,输入的数字为“2855-9649-2915”,每个4位数字块的最后一位数字为验证码:
2+8+5=15 => modulo10(15)=5 (correct)
9+6+4=19 => module10(19)=9 (correct)
2+9+1=12 => module10(12)=2 (not 5, so incorrect number was entered)
This page包含对信用卡的解释以及实现它的php源代码。
编辑:错误号码,已更正。谢谢,克里斯!