我使用字符串和int进行了测试,我可以想象,只要它以http://开头,它将是使用FILTER_VALIDATE_URL的有效URL。那么,为什么我们需要FILTER_VALIDATE_URL?为什么不在输入中添加http://就可以使其有效?任何以http://开头的内容都会被FILTER_VALIDATE_URL验证吗?
var_dump(filter_var ('http://example',FILTER_VALIDATE_URL));
我使用字符串和int进行了测试,我可以想象,只要它以http://开头,它将是使用FILTER_VALIDATE_URL的有效URL。那么,为什么我们需要FILTER_VALIDATE_URL?为什么不在输入中添加http://就可以使其有效?任何以http://开头的内容都会被FILTER_VALIDATE_URL验证吗?
var_dump(filter_var ('http://example',FILTER_VALIDATE_URL));
那么从技术上说,这是后的方案开始(如http://
),包含合法的URI字符的任何URI是按照官方的URI规范有效在RFC 3986:
每个URI开始使用第3.1节中定义的方案名称,该名称引用了该方案中用于分配标识符的规范。如此,URI语法是联合且可扩展的命名系统,其中每个方案的规范可以进一步限制使用该方案的标识符的语法和语义。
所以,你得到的回报没有什么奇怪的 - 这就是应该发生的事情。至于为什么你应该使用filter_var
和FILTER_VALIDATE_URL
这个标志......它比在每个可能的URL方案中做下面的事情更符合语义,你不同意吗?
if (strpos($url, 'http://') === 0
|| strpos($url, 'ftp://') === 0
|| strpos($url, 'telnet://') === 0
) {
// it's a valid URL!
}
告诉我们你测试了什么,以及如何。 – 2012-08-29 02:32:51
尝试使用http:// 20,http://示例,它们是否有效 – Jenny
您用来做测试的rhe代码是? – 2012-08-29 02:38:21