Javascript: экранирование цитат из динамического контента

У меня есть переменная, которая берет строку, возвращенную API Facebook, и превращает ее в объект JSON. Внутри объекта есть название Fan Pages.

var myJSON = JSON.parse('<?php echo $jsonString; ?>'); 

Часть строки, возвращаемая FB, выглядит примерно так:

{"data":[
    {"category":"Website",
    "name":"Page's Title",
    "access_token":"TOKEN"}
]}

Я оборачиваю <?php echo $jsonString; ?> в одинарных кавычках, потому что, если бы я использовал двойные кавычки, они столкнулись бы с двойными кавычками внутри строки, возвращаемой FB. Тем не менее, увидеть одиночную цитату внутри Page's Title? Если случится так, что FB вернет строку, содержащую одну кавычку, которая нарушает мой код JS, и я получаю Uncaught SyntaxError: Unexpected identifier в моей консоли.

Как я могу сделать мой код достаточно надежным для анализа строки, учитывая при этом двойные кавычки внутри нее и возможность одинарных кавычек?

2 ответа

Решение

Ты можешь использовать addslashes(), Возвращает строку с обратной косой чертой перед символами, которые необходимо заключить в кавычки. Эти символы одинарные кавычки ('), двойная кавычка ("), обратная косая черта (\) и NUL (байт NULL).

var myJSON = JSON.parse('<?php echo addslashes($jsonString); ?>'); 

Используйте аддлэш ()

Это вернет строку с обратной косой чертой перед символами, которые необходимо заключить в кавычки.

var myJSON = JSON.parse('<?php echo addslashes($jsonString); ?>');
Другие вопросы по тегам