Как безопасно печатать строковую переменную из PHP в JavaScript с помощью Symfony 1.4

Проблема, которая всегда существовала, заключается в том, как вы взаимодействуете с PHP с помощью JavaScript на стороне клиента, из-за специальных символов внутри строки, которые могут привести к полному сбою кода JS. Например, взгляните на следующий код:

Если этот код обрабатывается механизмом JS, например, в браузере, вы увидите следующее исключение:

Ошибка синтаксического анализа JS: строка PHP в JavaScript

Как и в действительности, наша строка в PHP состоит из нескольких строк, и она печатается так же. Строка должна быть экранирована, а именно заменять специальные символы, которые могут загрязнять ваш JavaScript, чтобы сделать его подходящим для JavaScript. В этой статье мы покажем, как легко можно безопасно печатать строку из PHP в контексте JavaScript с помощью помощника Symfony.

Безопасная печать строки из PHP в JavaScript

К счастью, вместо включения сложных методов, которые, вероятно, никто не поймет, в Symfony 1.4 было много помощников, таких как DateHelper, NumberHelper, UrlHelper а также другие. Такие помощники предлагают множество методов, которые часто используются разработчиками. Одним из таких помощников является помощник Escaping, который, как следует из его названия, включает несколько методов, которые можно использовать для экранирования специальных символов строк в различных ситуациях. Чтобы включить этого помощника в свои представления / действия, вы можете просто использовать use_helper Метод и имя помощника в качестве первого аргумента, который в этом случае является помощником Escaping:

Это позволит вам использовать различные обычные функции php, где загружен помощник. То, что нам нужно для безопасной печати строки из PHP в контексте JavaScript, это esc_js_no_entities метод, этот метод экранирует строку, что делает его подходящим для размещения в строке JavaScript. Он возвращает экранированное значение, поэтому вместо печати вашей переменной выведите значение, возвращаемое методом, передавая строку в качестве первого аргумента:


PHP напечатает следующую уценку:


var myString = "    Test\n    String";

Быстро и функционально нет? В коллекции методов вспомогательного средства Escaping, таких как Escape, есть более полезные методы esc_specialchars, esc_rawтак что не забудьте посмотреть к официальной документации наследника здесь.

Ссылка на основную публикацию
Adblock
detector