2013-01-03 44 views
2

我需要一个表单内的URL验证器。现在,我使用的是:Zend Framework主机名验证器

$url = new Zend_Form_Element_Text('url'); 
$url->addValidator(new Zend_Validate_Hostname()); 

将上面的代码验证网址,如:www.domain.com,但将无法通过验证为http://www.domain.com

我应该使用什么验证程序来验证两者,无论是否使用协议URL。

+0

您需要同时验证?或者只是域名很重要? – Vadyus

+0

我需要这两个URL都会通过验证过程。 –

回答

0

你不能用Zend_Validate_Hostname来做。你可以这样做的方法是编写你自己的验证器,将它分成两部分 - 并使用Zend_Validate_Hostname作为主机名,Zend_Validate_InArray作为协议的验证方法

0

这将验证的领域和URI:

$form->addElement ('text', 'url',array(
      'validators' => array (
        array(
         'Callback', 
         true, 
         ['callback' => function($value) { 
          if (Zend_Uri::check($value)) { 
           $hostnameValidator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS); //do not allow local hostnames, this is the default 
           $uriHttp = Zend_Uri_Http::fromString($value); 
           return $hostnameValidator->isValid($uriHttp->getHost()); 
          } 
          return false; 
         }], 
         'messages' => [Zend_Validate_Callback::INVALID_VALUE => 'Please enter a valid URL'] 
        ) 
       ) 
      ));