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}$/", "troy" => "/^(?:9792|65\d{2}|36|2205)\d{12}$/", ); 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; }
Fayalı olması dileğiyle.
Sevgiyle ve Bilgiyle Kalın...