【发布时间】:2010-03-05 22:06:19
【问题描述】:
我正在寻找一个合适的正则表达式来匹配一个 URL(带有方案、域、路径等的完整 URL) 我通常会使用 filter_var 但在这种情况下我不能,因为我必须支持 PHP
我在网上搜索过,但找不到任何我确信会万无一失的东西,我只能在 SO 上找到人们说要使用 filter_var。
有没有人为此使用正则表达式?
我的代码(只是为了让您可以看到我想要实现的目标):
function validate_url($url){
if (function_exists('filter_var')){
return filter_var($url, FILTER_VALIDATE_URL);
}
return preg_match(REGEX_HERE, $url);
}
【问题讨论】:
-
URI 验证可能有上千种不同的正则表达式。你应该选择哪一个取决于你想要它(或需要它)的严格程度和精确程度。鉴于 URI 语法随着新增内容(例如非 ASCII URI)而变得更加复杂,因此可能无法尊重标准中的所有内容进行验证。但无论如何,选择一个:regexlib.com/…
-
你可以考虑试试php.net/parse_url
-
@Frank:“这个函数不是用来验证给定的 URL”...
-
@poke 我正在查看您提供的列表(顺便说一下,有一些优点)。 @Frank 虽然 parse_url 确实允许您验证 URL,但这不是它的预期行为(如 poke 所说)。我只是猜测,但它可能会占用大量资源。
标签: php regex validation url backwards-compatibility