我需要一個表單內的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都會通過驗證過程。 –