27.4. メールアドレスの検証
前のページ | 第27章 Zend_Validate | 次のページ

## 27.4. メールアドレスの検証

Zend_Validate_Email は、メールアドレスの検証を行います。 このバリデータは、まずメールアドレスを local-part @ hostname に分割し、メールアドレスやホスト名の仕様にあわせて検証します。

基本的な使用法

基本的な使用法は、以下のようになります。

    <?php
    require_once 'Zend/Validate/EmailAddress.php';
    $validator = new Zend_Validate_EmailAddress();
    if ($validator->isValid($email)) {
        // メールアドレスは正しい形式のようです
    } else {
        // 不正な形式なので、理由を表示します
        foreach ($validator->getMessages() as $message) {
            echo "$message\n";
        }
    }

これは、メールアドレス `$email` を検証し、失敗した場合は その原因を表す便利なエラーメッセージを `$validator->getMessages()` で取得します。

複雑なローカルパート

Zend_Validate_Email は、メールアドレスの検証を RFC2822 にもとづいて行います。たとえば、妥当な形式のメールアドレスとしては `bob@domain.com`、`bob+jones@domain.us`、 `"bob@jones"@domain.com` および `"bob jones"@domain.com` などがあります。 かつて使われていたものの、現在は有効とはみなされないフォーマットもあります (たとえば、メールアドレスに改行文字や "\" を使用するなど)。

さまざまな形式のホスト名の検証

メールアドレスのホスト名部分の検証は、Zend_Validate_Hostname で行います。デフォルトでは、`domain.com` 形式の DNS ホスト名のみが有効となります。しかし、 IP アドレスやローカルホスト名も有効にしたいこともあるでしょう。 その場合は、Zend_Validate_EmailAddress のインスタンスを作成する際にパラメータを渡さなければなりません。 このパラメータで、認めたいホスト名の形式を指定します。 詳細は Zend_Validate_Hostname を参照ください。 たとえば DNS ホスト名およびローカルホスト名のどちらも許可するには、次のようにします。

    <?php
    require_once 'Zend/Validate/EmailAddress.php';
    $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);
    if ($validator->isValid($email)) {
        // メールアドレスは正しい形式のようです
    } else {
        // 不正な形式なので、理由を表示します
        foreach ($validator->getMessages() as $message) {
            echo "$message\n";
        }
    }

前のページ | 上に戻る | 次のページ
27.3. バリデータの書き方 | ホーム | 27.5. ホスト名の検証