我正在尝试在 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 并在 <script> 中回显时转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25700623/