javascript - json_encode() 给出特殊字符,如 '\n' ..我如何在 PHP 中替换它们?

标签 javascript php json

我使用 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/

相关文章:

javascript - 2 html内容加载后回调

javascript - 使用 ngClipboard 的 Angular Controller - 错误 : Unknown provider

php - 使用 Mysql 、 Jquery 和 Php 进行上下投票

php - 删除数组 php 上的唯一索引

php - 简单的 HTML DOM 从标签中获取所有属性

javascript - 我如何解析 json 值并将 id 放入变量中

json - Groovy JsonBuilder 在 toString() 时的奇怪行为

javascript - moment.js 在 firefox 中给出无效日期,但在 chrome 中没有

javascript - HTML - URL 输入表单

iphone - 如何通过填写 NSDictionary 以 JSON 格式发送 UIImage