If you ever need to validate credit card numbers, here is a simple validator class. Of course you can use it as simple as just defining validation rules in one array and use the php biult-in preg_match function to validate. But for the sake of good OOP practice, we need a class đ . Well, i hope that this will help you. So, first we create the validator class:
setCreditCardRules(); } /** * Set the rules for credit card validation * * @author [email protected] * @since May 2, 2012 */ private function setCreditCardRules() { $this->rules['creditCard'] = array( 'amex' => '/^3[4|7]\\d{13}$/', 'bankcard' => '/^56(10\\d\\d|022[1-5])\\d{10}$/', 'diners' => '/^(?:3(0[0-5]|[68]\\d)\\d{11})|(?:5[1-5]\\d{14})$/', 'disc' => '/^(?:6011|650\\d)\\d{12}$/', 'electron' => '/^(?:417500|4917\\d{2}|4913\\d{2})\\d{10}$/', 'enroute' => '/^2(?:014|149)\\d{11}$/', 'jcb' => '/^(3\\d{4}|2100|1800)\\d{11}$/', 'maestro' => '/^(?:5020|6\\d{3})\\d{12}$/', 'mc' => '/^5[1-5]\\d{14}$/', 'solo' => '/^(6334[5-9][0-9]|6767[0-9]{2})\\d{10}(\\d{2,3})?$/', 'switch' => '/^(?:49(03(0[2-9]|3[5-9])|11(0[1-2]|7[4-9]|8[1-2])|36[0-9]{2})' . '\\d{10}(\\d{2,3})?)|(?:564182\\d{10}(\\d{2,3})?)|(6(3(33[0-4]' . '[0-9])|759[0-9]{2})\\d{10}(\\d{2,3})?)$/', 'visa' => '/^4\\d{12}(\\d{3})?$/', 'voyager' => '/^8699[0-9]{11}$/', 'fast' => '/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3' . '(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$/' ); } /** * Get available rules for credit card validation. In case you need * them to pass to another object(s) and you don't want to use * the validator * * @author [email protected] * @since May 2, 2012 * @return array */ public function getCreditCardRules() { return $this->rules['creditCard']; } /** * The validator * * @author [email protected] * @since May 2, 2012 * @param string $cardType Card type as defined in setCreditCardRules() * @param numeric $cardNumber Credit card number * @throws \Exception */ public function isValid($cardType, $cardNumber) { if(!isset($this->rules['creditCard'][$cardType])) { throw new \Exception('Invalid card type'); } return preg_match($this->rules['creditCard'][$cardType], $cardNumber); } } ?>
Easy, no ? Using it is very, very simple:
isValid($cardType, $cardNumber)) { echo 'Credit card number is valid'; } else { echo 'Invalid credit card number'; } ?>
Hope it is useful for you. Cheers !