有什么原因导致PHP的json_encode函数无法对字符串中的所有JSON控制字符进行转义?
例如,让我们采用一个跨越两行并包含控制字符(\ r \ n“ / \)的字符串:
<?php
$s = <<<END
First row.
Second row w/ "double quotes" and backslash: \.
END;
$s = json_encode($s);
echo $s;
// Will output: "First row.\r\nSecond row w\/ \"double quotes\" and backslash: \\."
?>
请注意,回车符和换行符不转义。为什么?
我使用jQuery作为JS库,并且当您完全100%信任传入的数据时,它的$
.getJSON()函数可以正常工作。否则我会像其他人一样使用JSON.org的库json2.js。但是,如果您尝试解析该编码字符串,则会引发错误:
<script type="text/javascript">
JSON.parse(<?php echo $s ?>); // Will throw SyntaxError
</script>
而且您无法获取数据!如果删除或转义该字符串中的\ r \ n“和\,则JSON.parse()不会引发错误。
是否有任何现有的良好的PHP函数用于转义控制字符。具有搜索和替换数组的简单str_replace将不起作用。
D’oh-您需要双重编码:JSON.parse当然需要一个字符串:
<script type="text/javascript">
JSON.parse(<?php echo json_encode($s) ?>);
</script>
问题内容: 我正在使用接受json响应的jquery ajax调用: 在我的php后端函数中,我在一个简单的数组上使用json_encode,如下所示: 但是 alert(msg.hello) 为我返回 未定义 。这是怎么了?另外,在我的 console.log中, 我能够得到如下输出: 问题答案: 使用的返回数据:
问题内容: 我知道Java中的一些转义字符,例如 哪里有完整的清单? 问题答案: 你可以在此处找到完整列表。 此时在文本中插入一个选项卡。 此时,在文本中插入一个空格。 此时在文本中插入换行符。 此时在文本中插入回车符。 此时,在文本中插入换页。 此时,请在文本中插入一个单引号字符。 此时,请在文本中插入双引号字符。 此时在文本中插入一个反斜杠字符。
问题内容: 我正在使用PHP代理来获取文件的内容。我想使用功能强大的jQuery选项搜索该文件,而不必在PHP中编写各种查询。这是我的PHP代码: 如果加载的页面太大,PHP将读取整个文档,但是json_encoding它只会提供文件的第一部分,而不是整个文件。我找不到有关JSON传递数据的大小限制的任何信息,但显然有一个。 问题:是否有变通办法来防止仅部分文件被传输? 我需要从其他域中获取文件,
问题内容: 我从Instagram提取JSON: 然后将变量解析为PHP数组以重组数据,然后重新编码和缓存文件: 当我打开缓存文件时,我所有的正斜杠“ /”都被转义了: 我从搜索中收集到自动执行此操作…是否可以禁用它? 问题答案: 有没有办法禁用它? 是的,您只需要使用该标志。 重要的 阅读之前:https : //stackoverflow.com/a/10210367/367456(知道你在做
问题内容: 我已经对使用内置函数制作的数组进行了编码。我需要像这样的数组数组格式: 但是,它返回为: 如何在不使用任何正则表达式欺骗的情况下删除这些行号? 问题答案: 如果您的PHP数组中的数组键不是连续的数字,则 必须 使另一个构造成为一个对象,因为JavaScript数组总是连续地进行数字索引。 在PHP的外部结构上使用,以丢弃原始的数组键,并将其替换为从零开始的连续编号: 例:
本文向大家介绍Json_encode防止汉字转义成unicode的方法,包括了Json_encode防止汉字转义成unicode的方法的使用技巧和注意事项,需要的朋友参考一下 大家都知道,json_encode通常会把json中的汉字转义成unicode,但是这并不一定是我们想要的。有时候,我们需要获得汉字形式的json字符串,比如需要获得gbk编码的json字符串(只要把汉字形式的字符串转码就可