WordPress как на ладони
wordpress jino

esc_url_raw() WP 2.8.0

Очищает URL для безопасного использования в запросе к БД, при редиректах и HTTP запросах. Не очищает для безопасного вывода на экран.

Не используйте эту функцию, если УРЛ выводится в HTML коде (на экран), используйте esc_url() - она заменяет HTML сущности - это защитит от XSS атак.

Работает на основе: esc_url()
✈ 1 раз = 0.000071с = очень быстро | 50000 раз = 1.60с = быстро

Хуков нет.

Возвращает

Строку, очищенный URL. Вернет пустую строку, если в УРЛ указан неуказанный в $protocols протокол.

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

esc_url_raw( $url, $protocols );
$url(строка) (обязательный)
УРЛ, который нужно очистить.
$protocols(массив)
Массив допустимых протоколов. Если не установлено, то: http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed, telnet.
По умолчанию: null

Примеры

#1 Демонстрация работы

$url = 'http://site.org?foo=<script> / нечто не </script> ';

echo esc_url_raw( $url );
// http://site.org?foo=script/нечтоне/script

echo esc_url( $url );
// http://site.org?foo=script/нечтоне/script

#2 Очистка УРЛ перед использованием в запросе

$url = 'http://wordpress.org';
$response = wp_remote_get( esc_url_raw( $url ) ); // не нужно очищать сущности
if ( ! is_wp_error( $response ) ) {
	echo wp_remote_retrieve_body( $response );
}

#2 Неправильное использование

<!-- ОШИБКА! Нужно использовать esc_url! -->
<img src='<?php echo esc_url_raw( $url ); ?>' />
<a href='<?php echo esc_url_raw( $url ); ?>'>WordPress</a>

Код esc url raw: wp-includes/formatting.php VER 4.9.1

<?php
function esc_url_raw( $url, $protocols = null ) {
	return esc_url( $url, $protocols, 'db' );
}

Cвязанные функции

Из метки: esc_ (очистка валидация)

Еще из раздела: Очистка данных

esc_url_raw 2 комментария
  • campusboy1951 cайт: www.youtube.com/c/wpplus

    А можно второй пример пояснить? Получается, если мы применим esc_url, то сущности заменятся и ссылка станет нерабочей. Или я ошибаюсь?

    К примеру, я вывожу на экран ссылку на ролик YouTube, там есть GET параметры, они ведь испортятся, ссылка станет нерабочей.

    1
    Ответитьгод назад #
    • Kama4697

      Нет не испортятся, конкретно в коде они изменятся, но ссылка будет рабочей!

      Это ссылка для браузера создается он понимает кодированный вариант и декодирует его автоматом как бы.

      Короче, у URL есть свои стандарты кодирования символов - эта функция этим и занимается, кодирует их для безопасного вывода на экран и чтобы браузер её правильно понял...

      Ответитьгод назад #

Здравствуйте, !

Ваш комментарий