parse_url - Разбирает URL и возвращает его компоненты
Вернуться к: URL
parse_url
(PHP 4, PHP 5, PHP 7)
parse_url — Разбирает URL и возвращает его компоненты
Описание
Эта функция разбирает 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($url, PHP_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()
- dirname() - Возвращает имя родительского каталога из указанного пути
- basename() - Возвращает последний компонент имени из указанного пути
- » RFC 3986
Вернуться к: URL