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.
C версии 4.7.0. был добавлен параметр $component
, чтобы соответствовать PHP функции parse_url().
Хуков нет.
Возвращает
Разное
.
Когда не указан компонент:
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 | The $component parameter was added for parity with PHP's parse_url(). |