2

我需要一个表单内的 URL 验证器。现在我正在使用:

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

上面的代码将验证 URL 的 like:www.domain.com但将无法验证http://www.domain.com.

我应该使用什么验证器来验证有和没有协议 URL 的情况。

4

3 回答 3

1

这将验证域和 uri:

$form->addElement ('text', 'url',array(
            '验证器' => 数组 (
                    大批(
                        '打回来',
                        真的,
                        ['回调' => 函数($值){
                            if (Zend_Uri::check($value)) {
                                $hostnameValidator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS); //不允许本地主机名,这是默认的
                                $uriHttp = Zend_Uri_Http::fromString($value);
                                返回 $hostnameValidator->isValid($uriHttp->getHost());
                            }
                            返回假;
                        }],
                        'messages' => [Zend_Validate_Callback::INVALID_VALUE => '请输入一个有效的 URL']
                    )
                )
            ));
于 2014-08-13T09:37:43.203 回答
0

您需要删除方案 http,或实施新的可重用验证器 http://www.rondobley.com/2011/09/24/how-to-validate-a-url-with-a-scheme-and- Zend 框架中的主机名/

于 2013-05-31T10:24:26.457 回答
0

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

于 2013-01-03T15:08:26.307 回答