【问题标题】:PHP Json Encoding w/ quote escaping in 5.2?在 5.2 中带有引号转义的 PHP Json 编码?
【发布时间】:2010-03-11 17:55:20
【问题描述】:

我正在玩 flickr api 和 php。我想通过 Ajax 将一些信息从 PHP 传递到 Javascript。我有以下代码:

json_encode($pics);

这会产生以下示例 JSON 字符串:

[{"id":"4363603591","title":"blue, white and red...another seattle view","date_faved":"1266379499"},{"id":"4004908219","title":"\u201cI just told you my dreams and you made me see that I could walk into the sun and I could still be me and now I can't deny nothing lasts forever.\u201d","date_faved":"1259987670"}]

然而,由于第二项(“不能否认”)中未转义的单引号,Javascript 对此存在问题。

我想使用带有 options 参数的函数 json_encode 来去掉引号,但这仅在 PHP 5.3 中可用,而且我正在运行 5.2(不是我的服务器)。有没有一种快速的方法可以在将其编码为 Json 之前遍历整个数组并转义所有内容?我寻找了一种方法来做到这一点,但这一切似乎都是在生成数据时对其进行编码,这是我无法做到的,因为我不是生成数据的人。

如果有帮助,我目前在 ajax 请求之后使用以下 javascript:

var photos = eval('(' + resptxt + ')');  

【问题讨论】:

    标签: php javascript encoding json


    【解决方案1】:

    您是否考虑过使用JSON2 而不是eval()?详情here.

    【讨论】:

      【解决方案2】:

      str_replace('\'', '\\'', json_encode($pics))

      【讨论】:

      • 嗯,但是双引号呢?我不能运行相同类型的替换,因为它也会替换所有引用的值!
      • 这在 PHP 中不起作用,你不能做 '\'', '\\''... 因为 php 会给你一个错误...很多单引号...你想要这样的东西 str_replace("'", "\'", json_encode($invoices));
      • @NickAldwin 使用 strtr。
      【解决方案3】:

      您必须执行(递归)foreach 才能遍历数组并手动操作它们。你可以做一个str_replace,但是addslashes 也可以正常工作(而且addcslashes 更好。)

      【讨论】:

      • 这就是我害怕的(好吧,不害怕,但希望有更快的方法)。
      猜你喜欢
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2012-05-01
      相关资源
      最近更新 更多