从json_encode

时间:2016-11-01 16:41:23

标签: javascript php regex

我有一个代码片段,它将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,因为数据库中已存在大量数据并且更改它有点困难。

2 个答案:

答案 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);?>;