Klasa Zend_Validate_Email pozwala ci na przeprowadzenie walidacji adresu email. Walidator wpierw dzieli adres email na część lokalną oraz na nazwę serwera, a następnie próbuje sprawdzić je w oparciu o znane specyfikacje dla adresów email oraz adresów serwerów.
Podstawowe użycie
Poniżej podstawowy przykład użycia:
<?php require_once 'Zend/Validate/EmailAddress.php'; $validator = new Zend_Validate_EmailAddress(); if ($validator->isValid($email)) { // adres email wygląda na prawidłowy } else { // adres email jest nieprawidłowy; wyświetl powody foreach ($validator->getMessages() as $message) { echo "$message\n"; } }
Sprawdzi to adres email $email
i w przypadku niepowodzenia
wypełni $validator->getMessages()
użytecznymi informacjami
informującymi o błędach.
Części adresu email
Zend_Validate_Email dopasuje każdy prawidłowy adres email zgodny ze
specyfikacją RFC2822.
Na przykład, poprawnymi adresami będą bob@domain.com
,
bob+jones@domain.us
, "bob@jones"@domain.com
oraz "bob jones"@domain.com
Niektóre przestarzałe formaty adresów email nie są obecnie walidowane
(np. zawierające znak powrotu karetki, albo znak "\" w adresie email).
Walidacja dla różnych typów adresów serwerów
Część adresu email zawierająca adres serwera jest walidowana za pomocą
Zend_Validate_Hostname. Domyślnie akceptowane są jedynie adresy DNS w
stylu domain.com
, ale jeśli chcesz, to możesz włączyć
akceptowanie także adresów IP oraz adresów lokalnych.
Aby to zrobić, musisz utworzyć instancję Zend_Validate_EmailAddress
przekazując parametr określający typ adresów jakie chcesz akceptować.
Więcej szczegółów znajdziesz w Zend_Validate_Hostname, jednak poniżej
możesz zobaczyć przykład akceptowania zarówno adresów DNS jak i adresów
lokalnych:
<?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)) { // adres email wygląda na prawidłowy } else { // adres email jest nieprawidłowy; wyświetl powody foreach ($validator->getMessages() as $message) { echo "$message\n"; } }