我使用 json_encode()
函数编码了一个数组,它给了我一个像这样的字符串..
"[{"details":"power - 2000w \nac-220-240v \/ 50-60hz\n369 degree cordless base\n","model_id":"MC-EK3428 \/ MC-EK3328"}]"
如您所见,它包含特殊字符,例如“\n”。我希望将这些特殊字符替换为 ""
因为在 javascript
中我正在使用JSON.parse();
函数将此字符串转换为对象。
但它给了我一个错误
syntaxerror : missing ) after argument list
我认为这是因为字符串中的特殊字符。我怎样才能转义这些字符?
编辑
php :
$view->jsonencoded_array = json_encode($array);
javascript :
var products = JSON.parse('<?php echo $jsonencoded_array; ?>');//this line gives me the error
更新:
发现错误是这样的:
'<?php echo $jsonencoded_array; ?>'
最佳答案
这里的问题是 \n
(以及各种其他组合)在 JavaScript 字符串中具有特殊含义,并且您将 JSON 转储到 JavaScript 字符串中而不对这些字符进行任何转换。
由于 JSON 深受 JavaScript 文字语法的启发,因此您可以使用 json_encode
将 PHP 字符串转换为 JavaScript 字符串。
有一些问题,主要是 </script>
可以出现在 JSON 文本中而不会引起任何问题,但将其放在 JavaScript 中间 <script>
元素将导致 HTML 解析器在字符串中间 chop JavaScript……但 PHP 的默认编码规则将生成 <\/script>
这解决了这个问题。
所以:
<?php
$json_array = json_encode($array);
$javascript_string = $json_encode($json_array);
?>
var products = JSON.parse(<?php echo $javascript_string; ?>);
也就是说。 JSON 数组也是 JavaScript 数组,因此您可以完全跳过该步骤。
<?php
$json_array = json_encode($array);
?>
var products = <?php echo $json_array; ?>;
关于javascript - json_encode() 给出特殊字符,如 '\n' ..我如何在 PHP 中替换它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33332826/