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