@HAbRAhabp

WordPress экранирует кавычки, как убрать?

WordPress экранирует все кавычки, переданные в GET / POST запросе. Немного поразмыслив, вспомнил, что есть такая функция, как magic_quotes_gpc. Проверил php.ini, запустил функцию в скрипте без подключенного вордпресса, ничего не экранируется. Полез смотреть первое, что попалось на глаза, нашел в wp-settings.php такое:
// Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
wp_magic_quotes();

Тоесть он всем массивам _POST и _GET отдает слэши. Убирать этот костыль не хочется, stripcslashes использоваться не может, т.к. иногда передаются подобные строчки:
$("body").html("<div class=\"container_main\">body</div>");

и js код попросту становится невалидным. Можно ли как то получить данные в исходном виде или в определенном файле отключить эту функцию?
  • Вопрос задан
  • 1792 просмотра
Решения вопроса 1
cesnokov
@cesnokov
<head>&nbsp;</head>
Зная, где, что и как вы можете получить из _GET, напишите свой фильтр, например так:
Пусть входная строка будет такой:
_GET['value'] = '$("body").html("<div class=\"container_main\">body</div>");';

Можно вначале заменить неугодные Вам символы \" на \', а потом прогнать строку через stripslashes_deep(). Должно получиться:
$("body").html("<div class='container_main'>body</div>");

В идеале кавычки надо менять на их символы &quot;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы