我怎样才能检查信用卡是签证借记卡还是签证电子卡?我找到了这个例子,但我对信用卡算法一无所知。
我知道这些功能是如何工作的,我只是问我如何检查它是签证电子卡还是签证借记卡。目前它只支持VISA借方,但它需要检查VISA电子邮件。
$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?)",
);
谢谢!
发布于 2014-03-03 11:25:59
您找到的数组包含正则表达式。
您可以循环遍历这个数组,并检查所提供的值是否匹配某个正则表达式,如果匹配,您就知道他们使用了哪种类型的卡。
就像这样:
$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;
编辑现在有关您的新要求‘签证电子’匹配。
签证通常以49,44或47维萨电子开始: 42,45,48,49
因此,您需要根据这些规则创建一个正则表达式,并将其添加到数组中
https://stackoverflow.com/questions/22145520
复制相似问题