「携帯サイト制作には欠かせないデータ入力チェック『Zend Validate』の派生クラスを公開します」の2つ目としてメールアドレスの形式をチェックするクラスを公開します。
メールアドレスチェック
Zend標準のZend_Validate_EmailAddressはRFC2822の規格にそってチェックを行います。
が、なぜか日本の携帯のメールアドレスはRFC2822の規格に沿っていないでZend_Validate_EmailAddressチェックを行なうと実在するアドレスでもエラーを返す場合があります。
そこでチェックの制限をゆるめた処理のクラスを作りました。
require_once 'Zend/Validate/Abstract.php';
class My_Validate_EmailAddress extends Zend_Validate_Abstract
{
const INVALID = 'Invalid';
/**
* @var array
*/
protected $_messageTemplates = array(
self::INVALID => '%sの形式が不正です'
);
/**
* Defined by Zend_Validate_Interface
*
* メールアドレスが不正でないか検証
*
* @param string $value
* @return boolean
*/
public function isValid($value)
{
$valueString = (string) $value;
$this->_setValue($valueString);
$regex = '/^([*+!.$|\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})$/i';
if (preg_match($regex, $value, $matches)) {
return true;
} else {
$this->_error(self::INVALID);
return false;
}
}
}
その他Zend Validate派生クラス
【No.1】. ひらがなチェック
データにひらがな以外の文字があるかチェックを行ないます。
【No.2】.メールアドレスチェック
携帯電話で使われているメールアドレスをチェックを行ないます。
【No.3】. 電話番号チェック
電話番号の形式になっているかチェックします。
【No.4】. 郵便番号チェック
郵便番号の形式になっているかチェックします。
【No.5】.全角文字数チェック
全角文字数の最小、最大数をチェックします。
【No.6】.全角カタカナチェック
データに全角カタカナ以外の文字があるかチェックを行ないます。
【No.7】.厳密な未入力チェック
『0』と『null』を区別した入力チェックを行ないます
【No.8】.URLチェック
URLが形式に則っているかチェックします。
参考URL
メールアドレスチェックに関してはこちらのページがよくまとめられています。
より厳密なチェックを行ないたい場合は参考にしてください。
・各種メールアドレス・チェックをまとめたクラス
・re: PHPでメールアドレスかどうか調べる方法
・Email Address Validation