sanitize_url()

Очищает URL-адрес для использования в базе данных или перенаправлении
Функция WordPress
INT 2.3.1
WordPress Icon

Описание функции

Функция sanitize_url() предназначена для очистки URL-адреса перед его использованием в базе данных или для перенаправления. Она применяет необходимые фильтры и проверки, чтобы убедиться, что URL-адрес является безопасным и соответствует определенным требованиям.

Использование

sanitize_url( string $url, string[] $protocols = null ): string

Функция sanitize_url() принимает два параметра: $url (обязательный) — URL-адрес, который нужно очистить, и $protocols (необязательный) — массив допустимых протоколов. Если параметр $protocols не указан, то используется значение по умолчанию из функции wp_allowed_protocols().

  • $url (string) — Обязательный. URL-адрес, который нужно очистить.
  • $protocols (string[]) — Необязательный. Массив допустимых протоколов. По умолчанию используется значение из функции wp_allowed_protocols().

Функция возвращает очищенный URL-адрес после применения функции esc_url() с контекстом ‘db’.

<?php
$url = 'https://example.com';
// Очистка URL-адреса
$clean_url = sanitize_url( $url );
// Вывод очищенного URL-адреса
echo $clean_url;
?>

В приведенном выше примере кода переменная $url содержит URL-адрес, который нужно очистить. Функция sanitize_url() применяется к переменной $url и возвращает очищенный URL-адрес, который затем выводится с помощью функции echo.

Примеры использования

Очистка URL-адреса от недопустимых символов


$url = 'http://example.com/?foo=1&bar=2';
$clean_url = sanitize_url($url);
echo $clean_url;

Результат:

http://example.com/?foo=1&bar=2

Функция sanitize_url() очищает URL-адрес от недопустимых символов, таких как пробелы или специальные символы. В данном примере, URL-адрес http://example.com/?foo=1&bar=2 очищается и возвращается без изменений.

Проверка протокола URL-адреса


$url = 'http://example.com';
$clean_url = sanitize_url($url);
echo $clean_url;

Результат:

http://example.com

Если URL-адрес не содержит допустимый протокол (например, «http://» или «https://»), то функция sanitize_url() автоматически добавляет протокол «http://». В данном примере, URL-адрес http://example.com проходит проверку и возвращается без изменений.

Удаление нежелательных протоколов


$url = 'ftp://example.com';
$clean_url = sanitize_url($url);
echo $clean_url;

Результат:

example.com

Если URL-адрес содержит недопустимый протокол (например, «ftp://»), то функция sanitize_url() удаляет протокол и возвращает только доменное имя. В данном примере, URL-адрес ftp://example.com содержит недопустимый протокол «ftp://», поэтому он удаляется и возвращается только доменное имя «example.com».

Добавление допустимых протоколов


$url = 'custom://example.com';
$protocols = array('http', 'https', 'custom');
$clean_url = sanitize_url($url, $protocols);
echo $clean_url;

Результат:

custom://example.com

При использовании второго параметра функции sanitize_url() можно указать массив допустимых протоколов. Если URL-адрес содержит протокол, который не указан в этом массиве, то он будет удален. В данном примере, URL-адрес custom://example.com содержит допустимый протокол «custom://», поэтому он остается без изменений.

Вопросы и ответы

Как работает функция sanitize_url()?

Функция sanitize_url() используется для очистки URL-адреса перед его использованием в базе данных или для перенаправления.

Она принимает два параметра: $url (обязательный) — URL-адрес, который нужно очистить, и $protocols (необязательный) — массив допустимых протоколов.

Функция возвращает очищенный URL-адрес после применения функции esc_url() с контекстом ‘db’.


/**
 * Sanitizes a URL for database or redirect usage.
 *
 * @param string      $url       The URL to be cleaned.
 * @param string|null $protocols An array of acceptable protocols. Defaults to return value of wp_allowed_protocols().
 * @return string The cleaned URL after esc_url() is run with the 'db' context.
 */
function sanitize_url( $url, $protocols = null ) {
    // Implementation code...
    return esc_url( $url, $protocols, 'db' );
}

Какие протоколы поддерживает функция sanitize_url()?

Функция sanitize_url() поддерживает различные протоколы, которые можно указать в параметре $protocols.

Если параметр $protocols не указан, то используется массив протоколов, возвращаемый функцией wp_allowed_protocols().


$protocols = array( 'http', 'https', 'ftp', 'ftps' );
$url = sanitize_url( $url, $protocols );

Какие символы и специальные символы допустимы в URL?

Функция sanitize_url() позволяет использовать в URL-адресе различные символы и специальные символы.

Она использует функцию esc_url() для очистки URL-адреса и удаления недопустимых символов.


$url = 'http://example.com/?param=value&param2=value2';
$sanitized_url = sanitize_url( $url );

Какие символы и специальные символы не допустимы в URL?

В URL не допустимы следующие символы и специальные символы:

  • Пробелы
  • Символы новой строки
  • Символы табуляции
  • Символы кавычек
  • Символы «<" и ">«
  • Символы «#» и «?»
  • Символы «{» и «}»
  • Символы «|» и «»
  • Символы «^» и «~»
  • Символы «[» и «]»
  • Символы «`» и «!»

Какие проверки безопасности выполняет функция sanitize_url()?

Функция sanitize_url() выполняет следующие проверки безопасности:

  • Удаление недопустимых символов и специальных символов из URL
  • Проверка протокола URL на соответствие списку допустимых протоколов
  • Экранирование URL с использованием функции esc_url() с контекстом «db»

Какие ошибки могут возникнуть при использовании функции sanitize_url()?

При использовании функции sanitize_url() могут возникнуть следующие ошибки:

  • Некорректный формат URL
  • Недопустимый протокол URL

Какие альтернативы существуют для функции sanitize_url()?

Вместо функции sanitize_url() можно использовать следующие альтернативы:

  • Функция filter_var() с фильтром FILTER_SANITIZE_URL
  • Функция wp_http_validate_url()

Функция sanitize_url() предназначена для очистки URL от недопустимых символов и специальных символов, а также для проверки безопасности протокола URL. Она возвращает очищенный URL после применения функции esc_url() с контекстом «db». При использовании функции необходимо учитывать возможные ошибки, такие как некорректный формат URL или недопустимый протокол. В качестве альтернативы можно использовать функцию filter_var() с фильтром FILTER_SANITIZE_URL или функцию wp_http_validate_url().

Связанные элементы

  • Функция wp_allowed_protocols(): Возвращает массив разрешенных протоколов для использования в URL.
  • Функция esc_url(): Экранирует URL для безопасного использования в HTML или атрибутах URL.
  • Функция wp_parse_url(): Разбирает URL на составные части и возвращает ассоциативный массив с этими частями.
  • Функция wp_http_validate_url(): Проверяет, является ли переданный URL действительным.
  • Функция wp_kses_bad_protocol(): Удаляет небезопасные протоколы из URL.
  • Функция wp_kses_bad_protocol_once(): Удаляет небезопасные протоколы из URL, но только один раз.
Обсуждение