如何检查给定的值是否是有效的URL
问题描述:
我需要一些函数来检查给定的值是否为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
?>
答
如果你正在运行PHP 5(!你应该是),只需使用filter_var()
:
function is_url($url)
{
return filter_var($url, FILTER_VALIDATE_URL) !== false;
}
附录:如the PHP manual entry for parse_url()
(和@Liutas在他的评论)指出:
此功能是不是旨在验证给定的URL,它只是将其分解成上述部分。部分网址也被接受,parse_url()尽力解析正确。
例如,parse_url()
将查询字符串视为URL的一部分。但是,查询字符串是而不是完全是一个URL。下面的一行代码:
var_dump(parse_url('foo=bar&baz=what'));
输出这样的:
array(1) {
["path"]=>
string(16) "foo=bar&baz=what"
}
答
使用parse_url
和检查虚假
<?php
$url = 'http://username:[email protected]/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
看看这对你的作品:http://*.com/questions/2390275/php-regex-for-validating-a -url – MacAnthony 2010-06-21 13:52:15
可能的重复:http://*.com/questions/161738/what-is-the-best-regular-expression-to-check-if-a-string-is-a-valid-url – 2010-06-21 13:52:29
不是愚蠢 - 这两个人要求一个正则表达式,而这一个不是。 – nickf 2010-06-21 14:05:30