【发布时间】:2015-08-20 08:21:53
【问题描述】:
我想知道在 php 中检查提供的 url 是否有效的最佳方法是什么...起初我尝试过:
filter_var($url, FILTER_VALIDATE_URL) === false
但它不接受www.example.com(无协议)。所以我尝试了一个简单的修改:
protected function checkReferrerUrl($url) {
if(strpos($url, '://') == false) {
$url = "http://".$url;
}
if(filter_var($url, FILTER_VALIDATE_URL) === false) {
return false;
}
return true;
}
现在它可以与www.example.com 一起正常工作,但也可以接受简单的foo,因为它转换为http://foo。然而,虽然这不是一个有效的公共网址,但我认为......那你有什么建议?回到传统的正则表达式?
【问题讨论】:
-
是的,我想说正则表达式是要走的路。有很多用于 URL 验证的模式,所以如果你不想自己写一个,你总能找到一个。
-
这取决于您所说的“有效”。它应该存在,即成功响应请求吗?在这种情况下,link 可能就是您要查找的内容。
-
我只是想检查一下推荐人是否确定我是否应该显示一些东西。但是有可能在输入配置的那一刻,这样的链接不存在(即一些网站将在不久的将来发布,管理员想提前配置一些东西)
标签: php url-validation