如何检查给定值是否为有效URL

Liu*_*tas 1 php validation url

我需要一些函数来检查给定的值是一个url.

我有代码:

<?php
$string = get_from_db();
list($name, $url) = explode(": ", $string);
if (is_url($url)) {
    $link = array('name' => $name, 'link' => $url);
} else {
    $text = $string;
}
// Make some things
?>
Run Code Online (Sandbox Code Playgroud)

Bol*_*ock 7

如果你正在运行PHP 5(你应该是!),只需使用filter_var():

function is_url($url)
{
    return filter_var($url, FILTER_VALIDATE_URL) !== false;
}
Run Code Online (Sandbox Code Playgroud)

附录:作为PHP手册条目parse_url()(和@Liutas在他的评论中)指出:

此功能并不意味着验证给定的URL,它只会将其分解为上面列出的部分.部分URL也被接受,parse_url()会尽力正确解析它们.

例如,parse_url()将查询字符串视为URL的一部分.但是,查询字符串完全是URL.以下代码行:

var_dump(parse_url('foo=bar&baz=what'));
Run Code Online (Sandbox Code Playgroud)

输出:

array(1) {
  ["path"]=>
  string(16) "foo=bar&baz=what"
}
Run Code Online (Sandbox Code Playgroud)