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;
 }