Функция WP_PARSE_URL() в WordPress
Функция wp_parse_url() разбирает URL и возвращает его составляющие. Это обертка для функции parse_url() из PHP, которая обеспечивает согласованность значений, возвращаемых в разных версиях PHP.
Что делает функция wp_parse_url()
- Упрощает работу функции
parse_url()и позволяет указывать:- URL без протокола (начинается с
//). - Относительный URL (начинается с
/).
- URL без протокола (начинается с
С версии PHP 5.4.7 было исправлено определение хост�� для неопределенных ссылок.
- Скрывает ошибки, возвращаемые функцией
parse_url(). Ранее, если URL не удавалось разобрать, функция выдавала ошибку уровня E_WARNING (предупреждение).
С версии WordPress 4.7.0 был добавлен параметр $component для соответствия с parse_url() в PHP.
Возврат
Функция может вернуть разные значения в зависимости от запросов:
-
Если компонент не указан:
- Массив компонентов URL — при успешном выполнении.
false— при ошибке разбора.
-
Если компонент указан:
stringилиinteger— значение указанного компонента (дляPHP_URL_PORTвозвращается целое число).null— если компонент не существует в данном URL.
Использование
Используйте функцию следующим образом:
wp_parse_url( $url, $component );
Параметры
$url(string, обязательный) — URL для разбора.-
$component(int) — конкретный компонент для получения. Используйте одну из предопределённых констант PHP:PHP_URL_SCHEMEPHP_URL_HOSTPHP_URL_PORTPHP_URL_USERPHP_URL_PASSPHP_URL_PATHPHP_URL_QUERYPHP_URL_FRAGMENT
По умолчанию:
-1(возвращает все части как массив).
Примеры использования
Пример 1: Разбор URL
$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
);
*/
Получение отдельных частей URL:
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
Пример 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: Исправление ошибки анализа строк с портами
Функция также исправляет ошибку в parse_url(), когда строка, похожая на порт, некорректно разбиралась как порт:
$parts = wp_parse_url( '//example.com/foo:1234' );
/*
Array (
[host] => example.com,
[path] => /foo:1234
);
*/
$parts = parse_url( '//example.com/foo:1234' );
/*
Array (
[host] => example.com,
[port] => 1234,
[path] => /foo:1234
);
*/
Шапка документации
Изменения
- С версии 4.4.0 — функция была введена.
- С версии 4.7.0 — добавлен параметр
$componentдля соответствия сparse_url()в PHP.
Функция wp_parse_url() полезна для разбора URL в WordPress и позволяет извлекать различные компоненты URL на удобном уровне, особенно для начинающих пользователей.