检查网址是否有效的最佳方法

php
2022-08-30 06:34:25

我想使用PHP来检查,变量中存储的字符串是否包含有效的链接语法,或者只是一个普通的文本。我正在寻找的函数或解决方案应该识别所有链接格式,包括带有GET参数的链接格式。$myoutput

在我的情况下,许多网站上建议的实际查询字符串(使用CURL或函数)的解决方案是不可能的,我想避免它。file_get_contents()

我想到了正则表达式或其他解决方案。


答案 1

您可以使用本机筛选器验证程序

filter_var($url, FILTER_VALIDATE_URL);

验证值作为 URL(根据 » http://www.faqs.org/rfcs/rfc2396),可选择使用必需的组件。请注意,有效的URL可能没有指定HTTP协议 http:// 因此可能需要进一步的验证来确定URL使用预期的协议,例如 ssh:// 或mailto:。请注意,该函数只会找到有效的ASCII URL;国际化域名(包含非 ASCII 字符)将失败。

例:

if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
    die('Not a valid URL');
}

答案 2

这是我在那里找到的最好的教程:

http://www.w3schools.com/php/filter_validate_url.asp

<?php
$url = "http://www.qbaki.com";

// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);

// Validate url
if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
echo("$url is a valid URL");
} else {
echo("$url is not a valid URL");
}
?>

可能的标志:

FILTER_FLAG_SCHEME_REQUIRED - URL must be RFC compliant (like http://example)
FILTER_FLAG_HOST_REQUIRED - URL must include host name (like http://www.example.com)
FILTER_FLAG_PATH_REQUIRED - URL must have a path after the domain name (like www.example.com/example1/)
FILTER_FLAG_QUERY_REQUIRED - URL must have a query string (like "example.php?name=Peter&age=37")

推荐