Разбирает URL и возвращает его компоненты


(PHP 4, PHP 5)

parse_urlРазбирает URL и возвращает его компоненты

Описание

mixed parse_url ( string $url [, int $component = -1 ] )

Эта функция разбирает URL и возвращает ассоциативный массив, содержащий все компоненты URL, которые в нём присутствуют.

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

Список параметров

url

URL для разбора. Недопустимые символы будут заменены на знаки подчёркивания _.

component

Укажите одну из констант PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY или PHP_URL_FRAGMENT, чтобы получить только конкретный компонент URL в виде строки (string). Исключением является указание PHP_URL_PORT, в этом случае возвращаемое значение будет типа integer.

Возвращаемые значения

При разборе значительно некорректных URL-адресов parse_url() может вернуть FALSE.

Если параметр component будет опущен, функция возвратит ассоциативный массив (array). В массиве будет находиться по крайней мере один элемент. Возможные ключи в этом массиве:

  • scheme - например, http
  • host
  • port
  • user
  • pass
  • path
  • query - после знака вопроса ?
  • fragment - после знака диеза #

Если параметр component определён, функция parse_url() вернёт строку (string) или число (integer), в случае PHP_URL_PORT) вместо массива (array). Если запрошенный компонент не существует в данном URL, будет возвращён NULL.

Список изменений

Версия Описание
5.4.7 Исправлено распознавание host, если в URL отсутствовал компонент scheme и использовался ведущий разделитель компонентов.
5.3.3 Удалено E_WARNING, которое сообщало о невозможности разбора URL.
5.1.2 Добавлен параметр component.

Примеры

Пример #1 Пример использования parse_url()

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

print_r(parse_url($url));

echo 
parse_url($urlPHP_URL_PATH);
?>

Результат выполнения данного примера:

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

Пример #2 Пример использования parse_url() при отсутствии протокола

<?php
$url 
'//www.example.com/path?googleguy=googley';

// До 5.4.7 в path выводилось "//www.example.com/path"
var_dump(parse_url($url));
?>

Результат выполнения данного примера:

 array(3) {   ["host"]=>   string(15) "www.example.com"   ["path"]=>   string(5) "/path"   ["query"]=>   string(17) "googleguy=googley" } 

Примечания

Замечание:

Эта функция не работает с относительными URL.

Замечание:

Эта функция предназначена специально для разбора URL-адресов, а не URI. Однако, чтобы соответствовать требованиям обратной совместимости PHP, она делает исключение для протокола file://, в которой допускаются тройные слэши (file:///...). Для любого другого протокола это недопустимо.

Смотрите также

  • pathinfo() - Возвращает информацию о пути к файлу
  • parse_str() - Разбирает строку в переменные
  • http_build_query() - Генерирует URL-кодированную строку запроса
  • http_build_url() - Build a URL
  • dirname() - Возвращает имя родительского каталога из указанного пути
  • basename() - Возвращает последний компонент имени из указанного пути
  • » RFC 3986