验证 URL - URL 在没有 TLD 的情况下是否有效?

Validate URL - URL is Valid without TLD?

所以,我有一个输入框,有人可以在其中输入 URL。当他们提交论坛时,我希望它检查它是否有效 URL.

现在,我的问题是“http://someurl”(没有 TLD)有效,而 "someurl.com" 或 "www.someurl.com" 无效(没有 http://)。有办法解决这个问题吗?

$input = 'someurl.com'; // Could also be an IP

if (filter_var($input, FILTER_VALIDATE_IP)) {
    echo "IP Valid";
} else if (filter_var($input, FILTER_VALIDATE_URL)) {
    echo "URL Valid";
} else {
    echo "Not an IP or URL";
}

解决方法是自己插入 http://,因为 URL 必须 有一个方案。这就是简单 www.someurl.com 无效的原因:它没有方案。

没有顶级域的

URL 完全没问题,例如 http://localhost。在正确设置 search domain 的 LAN 中,您也可以在没有域的情况下使用 URLs:例如,如果您公司的搜索域是 somecompany.com 并且您有 URL http://fileserver,您的系统将在内部构建完全限定域名 fileserver.somecompany.com。有些 URL 根本没有主机(例如,tel:),顺便说一句。