javascript - 在 PHP 中构建 JSON 并在 <script> 中回显时转义字符

标签 javascript php json escaping

我正在尝试在 PHP 中构建一个大型 JSON 字符串,然后将其回显给客户端,例如 this 。我的问题是 PHP 函数 json_encode 无法出于 JavaScript 的目的正确转义字符。

这是我的数据:

my_table
------------------------------------------------------------------
|       title       |                 description                |
------------------------------------------------------------------
| Something's "Fun" | Hello[invisible carriage return char]World |
------------------------------------------------------------------

这些数据中有三个字符需要转义:单引号、双引号和回车符。

这是我的 php,它将数据转换为 json(在我将数据放入对象后):

$array = array(
   'title' => obj->title,
   'desc' => obj->description
);

$json = json_encode($array);

然后,我使用带有“正确”转义字符的 json 字符串,并从我的 View 将其回显给客户端,如下所示:

<script>
   var jsonString = '<?php echo $json; ?>';
   var obj = JSON.parse(jsonString);
</script>

但是当页面加载时,我的浏览器(Chrome)会推送“意外标识符”错误,因为脚本标记实际上是这样的:

<script>
   var jsonString = '{"title":"Something's \"Fun\"","desc":"Hello\nWorld"}';
   var obj = JSON.parse(jsonString);
</script>

从js的 Angular 来看,双引号是唯一正确转义的。单引号根本没有转义,js 在\n 处吓坏了。

顺便说一句:手动转义单引号不起作用。我不知道如何处理\n 才能让 js 识别它。

最佳答案

这只是对 json 的误解:按字面意思写成可以创​​建 JavaScript 对象的格式。因此,一旦 json 字符串被回显到 <script> 中的页面,标签不需要解析它。 View 中的代码应如下所示:

<script>
   var obj = <?php $json; ?>;
</script>

关于javascript - 在 PHP 中构建 JSON 并在 &lt;script&gt; 中回显时转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25700623/

相关文章:

php - 试图删除数据库中的条目,收到 sql 错误但无法解决

c++ - 从客户端到服务器的额外数据(json)

javascript - 调整浏览器大小时 jQuery 重新运行脚本

javascript - typescript 语法 let { var } = var 是如何工作的?

javascript - 我应该在 removeChild 之前从元素中删除事件处理程序吗?

javascript - Jquery Ajax 单击在 div 中显示页面

php - 新的 Google reCAPTCHA 始终无法通过本地主机进行验证

php - file_get_contents无效

android - 如何在截击中发送 json 数组作为 post 请求?

当值可以是数组或单个项目时,C# DataContractJsonSerializer 失败