Функция ESC_URL() в WordPress: очистка URL-адресов и их безопасное использование

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

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

Зачем использовать esc_url()?

Используйте esc_url(), когда вам нужно очистить URL. Например, это важно для текстов или атрибутов HTML. Эта функция преобразует некоторые символы в HTML-сущности. Например, амперсанд & становится &, а одинарная кавычка ' превращается в '.

Важно!

Не используйте URL-адреса без протокола. Каждый URL должен начинаться с одного из следующих протоколов:

  • http
  • https
  • ftp
  • ftps
  • mailto
  • news
  • irc
  • gopher
  • nntp
  • feed
  • telnet

Используемые функции

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

Процесс работы функции

Если ваш URL не соответствует установленным протоколам, функция вернет пустую строку. После применения фильтра clean_url, возвращается очищенный URL.

Использование функции

Синтаксис

esc_url( $url, $protocols, $_context );
  • $url (string) (обязательный) — URL, который нужно очистить.
  • $protocols (array) — Массив допустимых протоколов. По умолчанию: http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed, telnet. По умолчанию: null.
  • $_context (string) — Как будет использоваться URL. Может быть:
    • 'display' — заменяются амперсанды (&) и одинарные кавычки (') на HTML-сущности.
    • 'db' — стандартная очистка.
    • '' — стандартная очистка. По умолчанию: 'display'.

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

Простой пример

$url = "http;//example.com/link?var='some&";
echo esc_url( $url ); // Вывод: http://example.com/link?var='some&

Пример с изображением

$url = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAD///////neHiwAAAAF3RST/+8RwZ==';
echo esc_url( $url ); // Вывод: ''

Относительный URL

echo esc_url( '/foo' ); // Вывод: /foo

Сравнение с urlencode()

  • urlencode() — кодирует строку, чтобы её можно было использовать как часть URL (без домена). Если использовать весь URL, он станет непригодным.
  • esc_url() — обрабатывает весь URL. Она не ломает его и заботится о безопасном отображении.
$url = "http://example.com/моя ссылка?var='some&";
echo esc_url( $url );   // Вывод: http://example.com/моя%20ссылка?var='some&
echo urlencode( $url ); // Вывод: http%3A%2F%2Fexample.com%2F%D0%BC%D0%BE%D1%8F+%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%3Fvar%3D%27some%26

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

Вот основные шаги, которые выполняет функция esc_url():

  1. Очистка пробелов — заменяет пробелы на %20.
  2. Удаление недопустимых символов — с помощью регулярных выражений.
  3. Проверка на mailto — если это email, удаляются специальные символы переноса.
  4. Определение протокола — если протокол отсутствует, добавляется http://.
  5. Замена амперсандов и одинарных кавычек — только для отображения.

Функция esc_url() — это важный инструмент для повышения безопасности вашего WordPress-сайта, позволяя правильно обрабатывать и отображать URL-адреса.

Leave a Reply

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