【发布时间】:2019-04-19 02:38:48
【问题描述】:
输入字符串是:
https://lh
但是,有:
var_dump(filter_var('https://lh', FILTER_VALIDATE_URL)) // string(10) "https://lh"
由于某种原因,上述字符串被归类为有效 URL。我读过另一篇 SO 帖子说 FILTER_VALIDATE_URL 不限于 http 协议,但上面的链接肯定不是任何协议的有效 URL。
为什么会这样?
【问题讨论】:
-
其实就是一个有效的URL。
-
这个网址有什么问题?是因为,它只是一个顶级域名吗?
-
尝试致电
parse_url()并对各个部分执行额外的验证步骤。请注意:您似乎对有效 URL 和主机名的外观有很多不正确的假设。 -
@FunkFortyNiner 正如其他人所说,有效的 URL 不必使用 FQDN - 它可以只使用主机名。
protocol://host:port/path/filename.foo?arguments协议和主机名是启动连接所需的唯一内容,主机名上唯一的关键部分是客户端必须能够解析它 - 主机文件、dns、带有附加搜索域的 dns,等等...
标签: php url filter-var