Функция 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()
:
- Очистка пробелов — заменяет пробелы на
%20
. - Удаление недопустимых символов — с помощью регулярных выражений.
- Проверка на mailto — если это email, удаляются специальные символы переноса.
- Определение протокола — если протокол отсутствует, добавляется
http://
. - Замена амперсандов и одинарных кавычек — только для отображения.
Функция esc_url()
— это важный инструмент для повышения безопасности вашего WordPress-сайта, позволяя правильно обрабатывать и отображать URL-адреса.