【发布时间】:2016-11-01 16:41:22
【问题描述】:
我有一个代码 sn-p,它将 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 之后它会自动在对象的字符串值周围添加双引号。
所以我尝试用 ' 替换所有 " 但它正在替换所有双引号。我在想是否可以通过正则表达式来替换 html 元素或其他内容中的 " 。我无法在保存时转义 HTMl,因为数据库中已经存在大量数据并且更改它有点困难。
【问题讨论】:
-
$arr = array( id => 1, msg => "<h1>Some text</h1> <img src=\"http://test.png\">") -
你期望什么。 json 字符串 必须 包裹在
"中。删除它们会导致 json 语法错误。更改 json_encode 生成的内容显然会引入语法错误。您不能通过修改 json 字符串来重新定义 json 应该是什么,然后期望 json 解析器接受您正在生成的错误文本。 -
你不需要这样做:
var json = <?= json_encode($arr); ?>应该足够了。 -
嗨@Blazemonger 我无法转义html中的双引号,因为它已经保存在数据库中。
-
json_encode() 将使用反斜杠转义双引号并始终生成有效的 JSON。也许你的解码器坏了?
标签: javascript php regex