parse_url
(PHP 4, PHP 5, PHP 7, PHP 8)
parse_url — Розбирає URL та повертає його компоненти
Опис
parse_url(string $url, int $component = -1): int|string|array|null|false
Ця функція розбирає 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
, в цьому випадку значення, що повертається буде типу int.
Значення, що повертаються
При розборі значно некоректних URL-адрес parse_url() може повернути false
Якщо параметр component
буде опущено, функція поверне асоціативний масив (array). У масиві буде принаймні один елемент. Можливі ключі у цьому масиві:
- scheme - наприклад, http
- host
- port
- user
- pass
- path
- query – після знака питання
?
- fragment - після знаку ґрат
#
Якщо параметр component
визначено, функція parse_url() поверне рядок (string) (або число (int), у разі PHP_URL_PORT
) замість масиву (array). Якщо запитаний компонент не існує в даній URL-адресі, буде повернено null
. Починаючи з PHP 8.0.0, parse_url() розрізняє відсутні та порожні запити та фрагменти:
http://example.com/foo → query = null, fragment = null
http://example.com/foo? → query = "", fragment = null
http://example.com/foo# → query = null, fragment = ""
http://example.com/foo?# → query = "", fragment = ""
Раніше у всіх випадках запит та фрагмент були null
Зверніть увагу, що символи керування (дивіться ctype_cntrl()) у компонентах замінюються підкресленням (_
список змін
Версия | Опис |
---|---|
8.0.0 | parse_url() тепер розрізняє відсутні та порожні запити та фрагменти. |
Приклади
Приклад #1 Приклад використання parse_url()****
Loading...
Результат виконання наведеного прикладу:
array(8) {
["scheme"]=>
string(4) "http"
["host"]=>
string(8) "hostname"
["port"]=>
int(9090)
["user"]=>
string(8) "username"
["pass"]=>
string(8) "password"
["path"]=>
string(5) "/path"
["query"]=>
string(9) "arg=value"
["fragment"]=>
string(6) "anchor"
}
string(4) "http"
string(8) "username"
string(8) "password"
string(8) "hostname"
int(9090)
string(5) "/path"
string(9) "arg=value"
string(6) "anchor"
Приклад #2 Приклад використання parse_url()при отсутствии протокола
Loading...
Результат виконання наведеного прикладу:
array(3) {
["host"]=>
string(15) "www.example.com"
["path"]=>
string(5) "/path"
["query"]=>
string(17) "googleguy=googley"
}
Примітки
Застереження
Функція може видати некоректні результати для відносних або недійсних URL-адрес і результати можуть навіть не відповідати загальному поведінці HTTP-клієнтів. Якщо потрібно проаналізувати URL-адреси з ненадійних вхідних даних, потрібна додаткова перевірка, наприклад, за допомогою filter_var() з фільтром FILTER_VALIDATE_URL
Зауваження :
Ця функція призначена спеціально для аналізу URL-адрес, а не URI. Однак, щоб відповідати вимогам зворотної сумісності PHP, вона робить виняток для протоколу file://, у якій допускаються потрійні сліші (file:///...). Для іншого протоколу це неприпустимо.
Дивіться також
- pathinfo() - Повертає інформацію про шлях до файлу
- parse_str() - Розбирає рядок у змінні
- http_build_query() - Генерує URL-кодований рядок запиту
- dirname() - Повертає ім'я батьківського каталогу із зазначеного шляху
- basename() - Повертає останній компонент імені із зазначеного шляху
- » RFC 3986