На самом деле, есть проблема с этим, и она «небезопасна» (но я оставляю этот ответ для справки, а также для выявления недостатка, который я не рассматривал ранее):
Если на выходе JSON появляется '' (что совершенно законно), то HTML-код недействителен.
РЕДАКТИРОВАТЬ: json_encode
принимает необязательный JSON_HEX_TAG
, который предотвратит возникновение вышеуказанной ситуации. Обязательно используйте правильные выходные экранированные значения, необходимые для контекста.
(И предыдущие вещи ...)
Я собираюсь дать тот же ответ, что и все остальные ...
... используйте json_encode
или аналогичный / лучший механизм кодирования JSON. Это должно привести к JSON - JSON является текстовым представлением подмножества литералов объектов JavaScript . Тогда этот JSON (если не нарушен json_encode) гарантированно будет на 100% допустимым выражением без побочных эффектов в JavaScript .
... с одним исключением: просто используйте действительное-JS-выражение как есть.
# Look, no added nonsense.
var blah = <?= json_encode($my_arr); ?>;
очень маловероятно , что JSON придется вставить в свойство элемента перед использованием с хорошим дизайном. (Например, вероятно, нет необходимости в каком-либо «разборе» хранимого значения; используйте JavaScript и порядок выполнения между внутренним и внешним интерфейсом при отправке кода.)
Пожалуйста, уделите время, чтобы подумать о различных этапах, на которых происходит обработка. Например, неверно следующее :
var blah = ParseJson("<?= json_encode($my_arr); ?>;")
Это неправильно, потому что после запуска PHP результирующий HTML, возвращаемый браузеру, может выглядеть так:
var blah = ParseJson("{"hello": "world"}")
Счастливое кодирование