在PHP中构建JSON时转义字符并在<脚本>
Escaping Characters When Building JSON in PHP and Echoing It in <script>
我正试图用PHP构建一个大型JSON字符串,然后像这样将其返回到客户端。我的问题是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字符串,并从我的视图中将其回显到客户端,如下所示:
<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的角度来看,双引号是唯一正确转义的。单引号一点也没有被转义,js在n处吓坏了。
BTW:手动转义单引号无效。我不知道该怎么办才能让js识别它。
这只是对json的误解:以可以创建javascript对象的格式编写。因此,一旦json字符串在<script>
标记中被回显到页面,就不需要解析它
<script>
var obj = <?php $json; ?>;
</script>
相关文章:
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 使用<ahref>使用谷歌脚本在谷歌表单GUI中标记
- W3验证器->使用<脚本类型=“;text/javascript”>在html的正文中
- HTML文档中脚本标记的位置-<头部>&<身体>有不同的行为
- 如何逃离<脚本>jquery html()中的标记.我使用了innerHTML和outerHTML来解决这个
- </脚本>标签放错地方了
- 内联javascript与"<脚本>"字符串错误地关闭了脚本标记
- "未捕获类型错误/丢弃意外“;因为一句台词而出现?(HTML w/<脚本>)
- <脚本类型=“;模块“>负载性能
- 在<script src=“"></脚本>标签
- 使用几个<脚本>标签不会't工作-只调用一个脚本
- 等效于<script src=“;something1.json”></脚本>
- 如何将脚本添加到<头部>标记
- XSS脚本攻击攻击->可以't调用javascript
- 我如何访问传递给<脚本>标记
- 运行一个特定<脚本>(Dreamweaver)
- 是否在Script Src标记中包含Script<脚本>(JavaScript等)
- VS代码:在<脚本>标签
- 是否可以添加<脚本>添加'_someTag'到iFrame中的URL
- 优化J$plus组合3<脚本>转换为1