esc_url()
Очищает УРЛ для использования его в тексте, изменяет неправильные и удаляет опасные символы.
Эта функция в отличии от esc_url_raw() готовит строку к выводу на экран.
Всегда используйте эту функцию, когда нужно очистить УРЛы, например, в тексте, в атрибутах HTML тегов или где-либо еще.
Функция создает символы в виде HTML сущностей. Меняет амперсанд &
и кавычку '
, на их сущности &
, '
.
Избегайте УРЛов, в которых не используется нужный протокол, т.е. УРЛ должен начинаться с одного из: http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed, telnet.
Хуки из функции
Возвращает
Строку
. Очищенный УРЛ.
Использование
$url = esc_url( $url, $protocols, $_context );
- $url(строка) (обязательный)
- УРЛ, который нужно очистить.
- $protocols(массив)
- Массив принимаемых протоколов. По умолчанию это: http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed, telnet.
По умолчанию: null - $_context(строка)
Как будет использоваться УРЛ. Может быть:
display
- амперсанд ( & ) и кавычки ('), будут заменены на их сущности.''
(пустая строка) - стандартная очистка.db
- стандартная очистка.
По умолчанию: 'display'
Примеры
#1 Демонстрация очистки URL
$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 ); //> '' var_dump( esc_url( '' ) ); // string(0) "" var_dump( esc_url( false ) ); // string(0) "" var_dump( esc_url( null ) ); // string(0) ""
#2 Относительный URL
echo esc_url( '/foo' ); //> /foo // НО echo esc_url( 'foo' ); //> http://foo
#3 Сравнение с urlencode()
-
urlencode()
- кодирует преданную строку, чтобы её можно было использовать как часть URL (без домена). Если передать целиком URL, то он станет нерабочим. esc_url()
- обрабатывает URL целиком (не ломает его), заботится о безопасном выводе URL на экран - удаляет или изменяет в URL некоторые символы (совсем не так как это делает urlencode()).
$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
Список изменений
С версии 2.8.0 | Введена. |