@tuxx

JSON.parse не работает с апострофом?

Хочу на страницу из PHP передать некоторые данные в JS
Есть код
<script>
let items = []
items.push(JSON.parse('<?= json_encode($item) ?>'))
</script>

В $item содержится что-то типа
{"param1": "value1", "param2": "SYMBOL'symbol"}

C str_replace получается так
json_encode(str_replace("'", "\'", $item))

{"param1": "value1", "param2": "SYMBOL\\'symbol"}

т.е. вместо одного слэшка вставляется сразу 2 и в итоге получаю в консоли браузера ошибку
SyntaxError: missing ) after argument list
т.к. в JSON.parse вставляется текст прерывающийся где-то посередине строки json
  • Вопрос задан
  • 848 просмотров
Решения вопроса 1
amux
@amux
alp.ac
Используйте константы json encode:
json_encode($item, JSON_HEX_APOS)

JSON_HEX_APOS
Все символы ' кодируются в \u0027. Доступна начиная с PHP 5.3.0.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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