wp_parse_url()
Розбирає надісланий URL на компоненти. Уніфікує роботу PHP функції parse_url() (обгортка для неї).
Що саме робить функція:
Стандартизує (уніфікує) роботу parse_url() і дає змогу вказати:
- URL без протоколу (починається з
//
). - Відносний URL (починається з
/
).
Правильне визначення хоста посилання без протоколу було виправлено для parse_url() у версії PHP 5.4.7.
- URL без протоколу (починається з
- Пригнічує помилки, що повертаються parse_url() . До PHP 5.3.3 parse_url() створював помилку рівня
E_WARNING
, коли не міг розібрати URL.
З версії 4.7.0. був доданий параметр $component
, щоб відповідати PHP функції parse_url() .
Працює на основі:
_get_component_from_parsed_url_array()
_get_component_from_parsed_url_array()
1 раз – 0.000001 сек
(швидкість світла) | 50000 разів – 0.07 сек
(швидкість світла) |
PHP 7.2.5, WP 5.0
(швидкість світла) | 50000 разів – 0.07 сек
(швидкість світла) |
PHP 7.2.5, WP 5.0
Хуків немає.
Повертає
Разное
.
Коли компонент не вказано:
array
– масив компонентів URL за успішного аналізу.false
– при помилці аналізу.
Коли вказано компонент:
строка/число
– значення компонента URL (число повернеться для компонентаPHP_URL_PORT
).null
– компонент відсутній у надісланому URL.
Докладніше про дані, що повертаються, дивіться в описі parse_url() .
Використання
wp_parse_url($url, $component);
-
$url
(рядок) (обов’язковий) - URL для аналізу.
-
$component
(число) Компонент URL для отримання. Замість числа можна використовувати одну з визначених констант PHP:
PHP_URL_SCHEME PHP_URL_HOST PHP_URL_PORT PHP_URL_USER PHP_URL_PASS PHP_URL_PATH PHP_URL_QUERY PHP_URL_FRAGMENT
За замовчуванням: -1 (повертає всі частини масиву)
Приклади
#1 Демонстрація роботи
$url = 'https://example.com/path?arg=value#anchor'; $parts = wp_parse_url($url); /* $parts = Array ( [scheme] => https [host] => example.com [path] => /path [query] => arg=value [fragment] => anchor ) */ echo wp_parse_url( $url, PHP_URL_SCHEME ); // https echo wp_parse_url( $url, PHP_URL_HOST ); // example.com echo wp_parse_url($url, PHP_URL_PATH); // / path echo wp_parse_url( $url, PHP_URL_QUERY ); // arg=value echo wp_parse_url( $url, PHP_URL_FRAGMENT ); // anchor
Приклад аналізу всіх можливих компонентів URL:
$url = 'http://username:password@hostname:9090/path?arg=value#anchor'; $parts = wp_parse_url($url); /* $parts = Array ( [scheme] => http [host] => hostname [port] => 9090 [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor ) */ echo wp_parse_url( $url, PHP_URL_SCHEME ); // http echo wp_parse_url( $url, PHP_URL_HOST ); // hostname echo wp_parse_url($url, PHP_URL_PORT); // 9090 echo wp_parse_url( $url, PHP_URL_USER ); //username echo wp_parse_url($url, PHP_URL_PASS); // password echo wp_parse_url($url, PHP_URL_PATH); // / path echo wp_parse_url( $url, PHP_URL_QUERY ); // arg=value echo wp_parse_url( $url, PHP_URL_FRAGMENT ); // anchor
#2 Парсинг URL за відсутності протоколу
$url = '//www.example.com/path?googleguy=googley'; $url_parts = wp_parse_url($url); /* $url_parts = Array ( [host] => www.example.com [path] => /path [query] => googleguy=googley ) */
#3 Парсинг URL за відсутності домену
$parts = wp_parse_url( '/no-dom?param=1#anchor' ); /* Array ( [path] => /no-dom [query] => param=1 [fragment] => anchor ) */
список змін
З версії 4.4.0 | Введено. |
З версії 4.7.0 | $component parameter був added for parity with PHP’s parse_url () . |