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); ?>');