cit*_*404 2 php zend-framework2
我使用Zend\Validator\Hostname来验证包含url的输入字符串.问题是它只接受mydomain.com类型的URL,而不接受http://或https://协议前缀.实现理想行为的最佳方法是什么?
$inputFilter->add($factory->createInput(array(
'name' => 'shop_link',
'required' => false,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' => 100,
),
),
array(
'name' => 'Hostname',
'options' => array(
'allow' => \Zend\Validator\Hostname::ALLOW_DNS, // Allow these hostnames
'useIdnCheck' => true, // Check IDN domains
'useTldCheck' => true, // Check TLD elements
'ipValidator' => null, // IP validator to use
),
),
),
)));
Run Code Online (Sandbox Code Playgroud)
谢谢
我没有50个评论Sam的答案的声誉,但Hostname :: ALLOW_URI不起作用.并且在一年前没有工作 - /sf/answers/973152631/.如果你看一下源代码,就不应该工作.奇怪的是,它有两个upvotes.
$validator = new \Zend\Validator\Hostname();
$validator->setAllow($validator::ALLOW_DNS | $validator::ALLOW_URI);
var_dump($validator->isValid('http://domain.com')); // false!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2970 次 |
| 最近记录: |