Я извлекаю код JSON, хранящийся в MySQL, и он имеет дополнительные слэши, которые я должен удалить, чтобы разобрать его на JavaScript после того, как я распечатаю его на странице. Сейчас я делаю следующее:«Исправление» JSON, исходящее из MySQL
$save = str_replace("\n", "<br>", $save); // Replace new line characters with <br>
$save = str_replace('\\"', '"', $save); // top-level JSON
$save = str_replace('\\\\"', '\"', $save); // HTML inside top level JSON
$save = str_replace('\\\\\\\\\\"', '\\\\\"', $save); // HTML inside second level JSON
Вот пример JSON-код, так как он выходит из MySQL:
{\"id\":2335,\"editor\":{\"selected_shape\":\"spot-7488\"},\"general\":{\"name\":\"HTML Test\",\"shortcode\":\"html-test\",\"width\":1280,\"height\":776},\"spots\":[{\"id\":\"spot-7488\",\"x\":9.9,\"y\":22.6,\"default_style\":{\"use_icon\":1},\"tooltip_content\":{\"content_type\":\"content-builder\",\"plain_text\":\"<p class=\\\"test\\\">Test</p>\",\"squares_json\":\"{\\\"containers\\\":[{\\\"id\\\":\\\"sq-container-293021\\\",\\\"settings\\\":{\\\"elements\\\":[{\\\"settings\\\":{\\\"name\\\":\\\"Paragraph\\\",\\\"iconClass\\\":\\\"fa fa-paragraph\\\"},\\\"options\\\":{\\\"text\\\":{\\\"text\\\":\\\"<p class=\\\\\\\"test\\\\\\\">Test</p>\\\"}}}]}}]}\"}}]}
А вот как это должно выглядеть, чтобы получить разобран правильно (с использованием jsonlint.com для проверки):
{"id":2335,"editor":{"selected_shape":"spot-7488"},"general":{"name":"HTML Test","shortcode":"html-test","width":1280,"height":776},"spots":[{"id":"spot-7488","x":9.9,"y":22.6,"default_style":{"use_icon":1},"tooltip_content":{"content_type":"content-builder","plain_text":"<p class=\"test\">Test</p>","squares_json":"{\"containers\":[{\"id\":\"sq-container-293021\",\"settings\":{\"elements\":[{\"settings\":{\"name\":\"Paragraph\",\"iconClass\":\"fa fa-paragraph\"},\"options\":{\"text\":{\"text\":\"<p class=\\\"test\\\">Test</p>\"}}}]}}]}"}}]}
Пожалуйста, обратите внимание, что у меня есть HTML-код в формате JSON, который находится внутри другого JSON и это, где это становится немного грязным.
Мой вопрос - есть ли функция или библиотека для PHP (для JS тоже будет работать), который охватывает все эти угловые случаи, потому что я уверен, что кто-то найдет способ разбить скрипт.
Спасибо!
Попробуйте стрипы? (http://php.net/stripslashes) Хотя, если у вас есть HTML-код, нет гарантии, что что-то не сломается. Вам действительно нужно исправить это в источнике, если сможете. –
Что значит «исправить это у источника»? –
Процесс, который вы используете для вставки данных JSON в вашу базу данных, где-то добавляет эти обратные косые черты. Вам нужно изучить процесс, который захватывает JSON и модифицировать его, чтобы удостовериться, что JSON идет без проблем. –