Mit Zend_Validator lässt sich eine sehr anspruchsvolle und sichere E-Mail Validierung durchführen, die man mit passenden Fehlermeldungen für den User bei Bedarf versehen kann:
<?php
use Zend\Form\Element;
use Zend\InputFilter\InputProviderInterface;
use Zend\Validator;
class EmailElement extends Element implements InputProviderInterface
{
protected $attributes = array(
'type' => 'email',
);
private $wrongEmailMessage = 'Bitte geben Sie eine gültige E-Mail-Adresse an.';
public function getInputSpecification()
{
return array(
'name' => $this->getName(),
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
'attributes' => array(
'type' => 'email'
),
'validators' => array(
array(
'name' => 'NotEmpty',
'options' => array(
'messages' => array(
\Zend\Validator\NotEmpty::IS_EMPTY => $this->wrongEmailMessage
),
),
),
array(
'name' => 'EmailAddress',
'options' => array(
'hostnameValidator' => null,
'messages' => array(
\Zend\Validator\EmailAddress::INVALID => $this->wrongEmailMessage,
\Zend\Validator\EmailAddress::INVALID_FORMAT => $this->wrongEmailMessage,
\Zend\Validator\EmailAddress::INVALID_HOSTNAME => $this->wrongEmailMessage,
\Zend\Validator\Hostname::CANNOT_DECODE_PUNYCODE => $this->wrongEmailMessag,
\Zend\Validator\Hostname::INVALID => $this->wrongEmailMessage,
\Zend\Validator\Hostname::INVALID_DASH => $this->wrongEmailMessage,
\Zend\Validator\Hostname::INVALID_HOSTNAME => $this->wrongEmailMessage,
\Zend\Validator\Hostname::INVALID_HOSTNAME_SCHEMA => $this->wrongEmailMessage,
\Zend\Validator\Hostname::INVALID_LOCAL_NAME => $this->wrongEmailMessage,
\Zend\Validator\Hostname::INVALID_URI => $this->wrongEmailMessage,
\Zend\Validator\Hostname::IP_ADDRESS_NOT_ALLOWED => $this->wrongEmailMessage,
\Zend\Validator\Hostname::UNDECIPHERABLE_TLD => $this->wrongEmailMessage,
\Zend\Validator\Hostname::UNKNOWN_TLD => $this->wrongEmailMessage,
\Zend\Validator\Hostname::LOCAL_NAME_NOT_ALLOWED => $this->wrongEmailMessage,
\Zend\Validator\EmailAddress::INVALID_LOCAL_PART => $this->wrongEmailMessage,
\Zend\Validator\EmailAddress::INVALID_MX_RECORD => $this->wrongEmailMessage,
\Zend\Validator\EmailAddress::INVALID_SEGMENT => $this->wrongEmailMessage,
\Zend\Validator\EmailAddress::DOT_ATOM => $this->wrongEmailMessage,
\Zend\Validator\EmailAddress::QUOTED_STRING => $this->wrongEmailMessage,
\Zend\Validator\EmailAddress::INVALID_LOCAL_PART => $this->wrongEmailMessage,
)
)
)
)
);
}
}