2016-11-01 5 views
-1

У меня есть фрагмент кода, который кодирующий PHP массив в JSON, но, когда я пытаюсь разобрать его, что дает мне ошибку из-за" присутствует в значенииИзбавление от «"»от json_encode

PHP массив

$arr = array(id => 1, msg => <h1>Some text</h1> <img src="http://test.png">); 

Js код

var json = JSON.parse('<?php echo json_encode($arr);?>'); 

Когда я json_encode выше ошибки он окружает строку в двойные кавычки, что нарушает мою функцию JSON.parse. Я попытался использовать функцию replace, но после json_encode он автоматически добавляет двойные кавычки, окружающие строковые значения объекта.

Поэтому я попытался заменить все «на», но он заменяет все двойные кавычки. Я думаю, что это можно сделать с помощью регулярных выражений, чтобы заменить только «в элементах html или что-то еще. Я не мог избежать HTMl во время сохранения, потому что большое количество данных уже присутствует в базе данных, и изменение его немного сложно.

+0

'$ обр = массив (ID => 1, сообщ => "

Некоторый текст

")' – Blazemonger

+6

, что вы ожидаете. json string ** MUST ** быть завернутым в '' '. Удаление их делает это синтаксической ошибкой json. Изменение того, что созданный json_encode, очевидно, представляет синтаксические ошибки. Вы НЕ можете переопределить, что json должно быть, управляя json-строкой, а затем ожидая json parser, чтобы принять плохой текст, который вы производите. –

+2

вам не нужно это делать: 'var json = ' должно быть достаточно. – apokryfos

ответ

6

JSON уже разобран в момент, когда PHP его распечатает.

var json = <?php echo json_encode($arr); ?>; 

Когда вам нужно JSON.parse()?

JSON.parse() превращает уже сбежавший JSON в объект JSON/Javascript.

JSON.stringify() делает обратную сторону, избегая JSON до строки.

3

При вставке JSON в JavaScript нет необходимости обертывать его в кавычки или даже пытаться его проанализировать, поскольку JSON является допустимым объектом JavaScript или массивом. Удаляя кавычки, вы устраняете проблему необходимости избегать цитат.

var json = <?php echo json_encode($arr);?>; 
Смежные вопросы