我有一个代码片段,它将PHP数组编码为json,但是当我尝试解析它时,由于“存在于值中”而给出了错误
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函数。我尝试使用替换函数,但在json_encode之后,它会自动添加围绕对象字符串值的双引号。
所以我试图替换所有“with”,但它正在替换所有的双引号。我在想是可以通过正则表达式来替换“仅在html元素或其他内容中”。我在保存时无法逃避HTMl,因为数据库中已存在大量数据并且更改它有点困难。
答案 0 :(得分:6)
当PHP打印它时,JSON已经被解析了。
var json = <?php echo json_encode($arr); ?>;
您何时需要JSON.parse()
?
JSON.parse()
将已经转义的JSON转换为JSON / Javascript对象。
JSON.stringify()
完全相反,将JSON转义为字符串。
答案 1 :(得分:3)
将JSON插入JavaScript时,没有必要将其包装在引号中,甚至尝试解析它,因为JSON是一个有效的JavaScript对象或数组文字。通过删除引号,您可以消除需要转义引号的问题。
var json = <?php echo json_encode($arr);?>;