function CreditCardCompany($ccNum) { /* * mastercard: Must have a prefix of 51 to 55, and must be 16 digits in length. * Visa: Must have a prefix of 4, and must be either 13 or 16 digits in length. * American Express: Must have a prefix of 34 or 37, and must be 15 digits in length. * Diners Club: Must have a prefix of 300 to 305, 36, or 38, and must be 14 digits in length. * Discover: Must have a prefix of 6011, and must be 16 digits in length. * JCB: Must have a prefix of 3, 1800, or 2131, and must be either 15 or 16 digits in length. */ if (ereg("^5[1-5][0-9]{14}$", $ccNum)) return "Mastercard"; if (ereg("^4[0-9]{12}([0-9]{3})?$", $ccNum)) return "Visa"; if (ereg("^3[47][0-9]{13}$", $ccNum)) return "American Express"; if (ereg("^3(0[0-5]|[68][0-9])[0-9]{11}$", $ccNum)) return "Diners Club"; if (ereg("^6011[0-9]{12}$", $ccNum)) return "Discover"; if (ereg("^(3[0-9]{4}|2131|1800)[0-9]{11}$", $ccNum)) return "JCB"; } echo("test American Express: 378282246310005: ".CreditCardCompany("378282246310005")."\n"); echo("test Visa: 4111111111111111: ".CreditCardCompany("4111111111111111")."\n"); echo("test Mastercard: 5555555555554444: ".CreditCardCompany("5555555555554444")."\n");
here’s the output:
[root@server~]# php testcc.php test American Express: 378282246310005: American Express test Visa: 4111111111111111: Visa test Mastercard: 5555555555554444: Mastercard [root@server~]#
from http://blogs.sitepoint.com/card-validation-class-php/