我需要一个表单内的URL验证器。现在,我使用的是:Zend Framework主机名验证器
$url = new Zend_Form_Element_Text('url');
$url->addValidator(new Zend_Validate_Hostname());
将上面的代码验证网址,如:www.domain.com
,但将无法通过验证为http://www.domain.com
。
我应该使用什么验证程序来验证两者,无论是否使用协议URL。
我需要一个表单内的URL验证器。现在,我使用的是:Zend Framework主机名验证器
$url = new Zend_Form_Element_Text('url');
$url->addValidator(new Zend_Validate_Hostname());
将上面的代码验证网址,如:www.domain.com
,但将无法通过验证为http://www.domain.com
。
我应该使用什么验证程序来验证两者,无论是否使用协议URL。
你不能用Zend_Validate_Hostname来做。你可以这样做的方法是编写你自己的验证器,将它分成两部分 - 并使用Zend_Validate_Hostname作为主机名,Zend_Validate_InArray作为协议的验证方法
这将验证的领域和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'] ) ) ));
您需要同时验证?或者只是域名很重要? – Vadyus
我需要这两个URL都会通过验证过程。 –