【发布时间】:2015-10-03 06:11:57
【问题描述】:
在 StackOverflow 上已经对这个主题进行了很多讨论,但我设法探索的所有答案都未能产生我需要的结果。我想在将 URL 插入数据库之前检查该值实际上是一个 URL。 PHP FILTER_VALIDATE_URL 的默认函数返回 true,即使我们只提供 httpp://exampl
但只有当它是一个真正的域(如 example.net、example.com 等)时,我才需要验证该值。让我们尝试一个示例:
案例一:
$url = "http://example";
if(!filter_var($url, FILTER_VALIDATE_URL) === false) {
return true;
}
以上返回 true,但域无效。
案例 2:
$url = "http://google.com";
if(!filter_var($url, FILTER_VALIDATE_URL) === false) {
return true;
}
返回真,没关系。
但案例 1 的任何可能解决方案?请帮忙。
P.S.:我使用了 CURL,它可以工作,但是响应太慢(超过 5 秒)。任何固体溶液将不胜感激。
【问题讨论】:
-
什么是真正的域?我不确定你认为什么是有效的
-
get_headers 会帮忙吗?
-
感谢@Dagon,您的回复。对不起我在问题中的错别字。我已经编辑过了。我的意思是example 不能是有效域,因为它缺少 TLD(.com、.net 等),但该函数将其视为有效域。我希望我让你清楚我的问题。
-
您的意思是像
http://www.still-might-not-exist.com这样的“结构良好”还是真的像http://example中的智能生命一样正确(是的...您可以在局域网中拥有一台服务器来回答这个问题?如果你想检查服务器是否存在,你别无选择,只能探测它们......那么回答速度不在你手中 -
你不能为此准备正则表达式吗?
标签: php validation url