我需要一些函数来检查给定值是否为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
?>
答案 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。