验证 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:
),顺便说一句。
所以,我有一个输入框,有人可以在其中输入 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:
),顺便说一句。