Ağustos 19, 2023
Okuma süresi: ~1 dakika
Bazen sanal pos entegrasyonlarında, api bilgilerini gönderirken kart tipininde (Visa, Mastercard, Amex, Discover, Dinners, Enroute, Jbc) belirtilmesi istenebiliyor veya kullanıcıya hangi kart tipi olduğunu göstermek istiyorsunuz ya da başka bir nedenle kart tipine ihtiyacınız var. Regex kullanarak kart tiplerini tespit edebildiğimiz bir fonksiyon kullanabiliriz.
Küçük ama etkili fonksiyonumuzu paylaşalım.
function
kartTipi(
$number
){
$number
=
str_replace
(
" "
,
""
,
$number
);
$cardType
=
array
(
"visa"
=>
"/^4[0-9]{12}(?:[0-9]{3})?$/"
,
"mastercard"
=>
"/^5[1-5][0-9]{14}$/"
,
"amex"
=>
"/^3[47][0-9]{13}$/"
,
"discover"
=>
"/^6(?:011|5[0-9]{2})[0-9]{12}$/"
,
"dinners"
=>
"/^[300-305]d{11}$/"
,
"dinners"
=>
"/^3[68]d{12}$/"
,
"enroute"
=>
"/^2(014|149)d{11}$/"
,
"jbc"
=>
"/^3d{15}$/"
,
"jbc"
=>
"/^(2131|1800)d{11}$/"
,
);
foreach
(
$cardType
as
$key
=>
$value
) {
if
(preg_match(
$value
,
$number
))
{
$type
=
$key
;
break
;
}
else
{
$type
= false;
}
}
return
$type
;
}
Oldukça basit olan kodları istediğiniz şekle evirip çevirebilirsiniz.
Kullanımı ise;
$cardNo
=
"4546711234567894"
;
// VISA Test Kartı
switch
(kartTipi(
$cartNo
)) {
case
'visa'
:
echo
"Bu bir visa karttır."
;
break
;
case
'mastercard'
:
echo
"Bu bir mastercard karttır."
;
break
;
default
:
echo
"Kart tipi bulunamadı."
;
break
;
}
Umarım faydalı olur