如何检查信用卡是否为VISA借记卡或Visa Electron?我找到了这个例子,但我对于信用卡algortime一无所知。
我知道这些功能是如何运作的,我只是想知道如何检查它是VISA ELECTRON还是VISA DEBIT卡。目前它只支持VISA借记,但需要检查VISA ELECTRON
$cards = array(
"visa" => "(4\d{12}(?:\d{3})?)",
"visaelectron" => "??????????????????????????",
"amex" => "(3[47]\d{13})",
"jcb" => "(35[2-8][89]\d\d\d{10})",
"maestro" => "((?:5020|5038|6304|6579|6761)\d{12}(?:\d\d)?)",
"solo" => "((?:6334|6767)\d{12}(?:\d\d)?\d?)",
"mastercard" => "(5[1-5]\d{14})",
"switch" => "(?:(?:(?:4903|4905|4911|4936|6333|6759)\d{12})|(?:(?:564182|633110)\d{10})(\d\d)?\d?)",
);
谢谢!
答案 0 :(得分:1)
您找到的数组包含regular expressions。
您可以遍历此数组并检查提供的值是否与正则表达式之一匹配,如果是,则您知道他们使用了哪种类型的卡。
这样的事情:
$cards = array(
"visa" => "(4\d{12}(?:\d{3})?)",
"amex" => "(3[47]\d{13})",
"jcb" => "(35[2-8][89]\d\d\d{10})",
"maestro" => "((?:5020|5038|6304|6579|6761)\d{12}(?:\d\d)?)",
"solo" => "((?:6334|6767)\d{12}(?:\d\d)?\d?)",
"mastercard" => "(5[1-5]\d{14})",
"switch" => "(?:(?:(?:4903|4905|4911|4936|6333|6759)\d{12})|(?:(?:564182|633110)\d{10})(\d\d)?\d?)",
);
$card_number = '4242424242424242'; // some made up card number
$card_type = 'unknown';
foreach ($cards as $card => $pattern) {
if (preg_match('/' . $pattern . '/', $card_number)) {
$card_type = $card;
break;
}
}
echo $card_type;
[编辑] 现在关于“visaelectron”匹配的新要求。
签证通常以49,44或47开头 Visa电子:42,45,48,49
因此,您需要根据这些规则创建正则表达式并将其添加到数组