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

时间:2010-06-21 13:48:48

标签: 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
?>

3 个答案:

答案 0 :(得分:7)

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

function is_url($url)
{
    return filter_var($url, FILTER_VALIDATE_URL) !== false;
}

附录:the PHP manual entry for parse_url()(和@Liutas在他的评论中)指出:

  

此功能 用于验证给定的网址,它只会将其分解为上面列出的部分。也接受部分网址, parse_url()会尽力正确解析它们。

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

var_dump(parse_url('foo=bar&baz=what'));

输出:

array(1) {
  ["path"]=>
  string(16) "foo=bar&baz=what"
}

答案 1 :(得分:3)

使用parse_url并检查错误

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>

以上示例将输出:

Array
(
   [scheme] => http
   [host] => hostname
   [user] => username
   [pass] => password
   [path] => /path
   [query] => arg=value
   [fragment] => anchor
)
/path

答案 2 :(得分:0)

您可以检查ParseUrl是否返回false。