http://core.trac.wordpress.org/browser/trunk/wp-includes/formatting.php#L2239
Я смущен тем, когда следует использовать любой из них.
Предполагая, что у меня есть этот URL: http://site.com/?getsomejavascript=1
, который динамически генерируется javascript:
-
если я включаю скрипт с
esc_url(add_query_arg('apples', 420))
, я получаю,http://site.com/?getsomejavascript=1&apples=420
и он ломается из-за этих#038;
ссылок -
если я использую,
esc_url_raw(add_query_arg('apples', 420))
я получаю правильный URL:http://site.com/?getsomejavascript=1&apples=420
но в документации я узнаю, что esc_url_raw следует использовать только для экранирования URL-адресов, вставленных в базу данных…
Из записи Кодекса для проверки данных: URL -адреса :
Итак, основные отличия выглядят следующим образом:
esc_url()
кодирует объекты HTML, аesc_url_raw()
неesc_url()
предназначен для вывода, аesc_url_raw()
предназначен для хранения базы данныхРЕДАКТИРОВАТЬ:
Поскольку вы либо жестко кодируете (или сохраняете/сохраняете отдельно) фактический URL-адрес из строки запроса, а затем добавляете строку запроса через
[add_query_arg()][2]
, может быть, лучше экранировать добавленную строку запроса черезesc_js()
, а неesc_url()
?Например:
хорошо, но
esc_url()
это не работает должным образом, когда у вас есть аргументы запроса в URL-адресе, который вы хотите вывестиКак насчет использования
esc_js()
для экранирования только данных, добавленных черезadd_query_arg()
? См. редактирование в ответе выше.Я не пробовал, но это не имеет смысла 🙂 возвращаются как esc_js(‘apples’), так и ‘apples’
apples
. Проблема заключается в add_query_arg при объединении «яблок» с другими аргументами с помощью&
Тогда, если данные доверенные (т.е. статические), зачем вообще убегать?
Я не совсем уверен, что безопасно не избежать этого. Я в основном включаю скрипт, используя что-то вроде
<script type="text/javascript" src="<?= $_SERVER['REQUEST_URI'] ?>'/?javascriptcode=1"></script>