Для валидации URL существует валидатор Zend_Validate_Hostname. Однако для большинства случаев он слишком мощный и выдаёт слишком детальные сообщения об ошибках, непонятные обычным пользователям.
На сайте LAMPComputing появилось руководство по написанию собственного валидатора для проверки URL-адресов. Предлагается следующий валидатор:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | class BV_Validate_Uri extends Zend_Validate_Abstract { const MSG_URI = 'msgUri'; protected $_messageTemplates = array( self::MSG_URI => "Invalid URI", ); public function isValid($value) { $this->_setValue($value); //Validate the URI $valid = Zend_Uri::check($value); //Return validation result TRUE|FALSE if ($valid) { return true; } else { $this->_error(self::MSG_URI); return false; } } } |
Как видите, ничего лишнего. Минимум необходимого функционала.
Интегрируется валидатор с Zend_Form стандартными средствами:
1 2 3 | $website = $form->createElement('text', 'website'); $website->setLabel('Website URL'); $website->addValidator(new BV_Validate_Uri()); |
Полный вариант статьи про валидацию URI при помощи Zend_Framework