Функция WP_PARSE_URL() в WordPress: описание, параметры, примеры.

Функция WP_PARSE_URL() в WordPress

Функция wp_parse_url() разбирает URL и возвращает его составляющие. Это обертка для функции parse_url() из PHP, которая обеспечивает согласованность значений, возвращаемых в разных версиях PHP.

Что делает функция wp_parse_url()

  • Упрощает работу функции parse_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_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

$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 на удобном уровне, особенно для начинающих пользователей.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *