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