public function execute(&$value, &$error) { $is_mobile = sfMobileCarrierJP::isMobileEmailAddress($value); $param = $this->getParameterHolder(); if ($param->get('expect') === self::VALID && $is_mobile === true) { return true; } elseif ($param->get('expect') === self::NOT_VALID && $is_mobile === false) { return true; } else { $error = $this->getParameterHolder()->get('error_msg'); return false; } }
/** * #test ::isMobileEmailAddress * <code> * #true(sfMobileCarrierJP::isMobileEmailAddress("*****@*****.**")); * #true(sfMobileCarrierJP::isMobileEmailAddress("*****@*****.**")); * #false(sfMobileCarrierJP::isMobileEmailAddress("*****@*****.**")); * #false(sfMobileCarrierJP::isMobileEmailAddress("*****@*****.**")); * #true(sfMobileCarrierJP::isMobileEmailAddress("*****@*****.**")); * </code> */ public static function isMobileEmailAddress($emailaddr) { // ドメイン情報を取得 $domains = sfMobileCarrierJP::getDomains(); $pattern = "/^[^@\\s]+@((?:[-a-z0-9]+\\.)+[a-z]{2,})\$/i"; if (preg_match($pattern, $emailaddr, $matches)) { // check EmailAddress foreach ($domains as $domain) { $match_domain = $matches[1]; if ($match_domain == $domain) { // check mobile domain return true; } } } return false; }