Как проверить, является ли заданное значение действительным URL - PullRequest
1 голос
/ 21 июня 2010

Мне нужна какая-то функция, чтобы проверить, является ли данное значение 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 ]

7 голосов
/ 21 июня 2010

Если вы используете PHP 5 (и вы должны это делать!), Просто используйте filter_var():

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

Addendum: as Ручной ввод PHP дляparse_url() (и @Liutas в своем комментарии) указывает:

Эта функция не предназначена для проверки заданного URL, онатолько разбивает его на перечисленные выше части.Частичные URL-адреса также принимаются, parse_url () старается их правильно проанализировать.

Например, parse_url() рассматривает строку запроса как часть URL-адреса.Однако строка запроса - это , а не полностью URL.Следующая строка кода:

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

Выводит это:

array(1) {
  ["path"]=>
  string(16) "foo=bar&baz=what"
}
3 голосов
/ 21 июня 2010

используйте 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
0 голосов
/ 21 июня 2010

Вы можете проверить, возвращает ли ParseUrl значение false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...