【问题标题】:JSON decode string in PHP (array of arrays) Special charactersPHP中的JSON解码字符串(数组数组)特殊字符
【发布时间】:2016-10-07 06:49:23
【问题描述】:

所以我在将 JSON 字符串转换为 PHP 数组时遇到了这个问题。数据是通过 HTTP POST 发送的,所以我知道可能需要一些解码。

任何人都可以深入了解我将如何在 PHP 中使用 json_decode() 将此字符串转换为数组吗? "[[\"37\",\"text\",\"\\\"\\\"\"],[\"38\",\"text\",\"\\\"\\\"\"],[\"39\",\"text\",\"\\\"one word two words. Hello? \\\\\\\"escape\\\\\\\" lol\\\"\"]]"

输入是:

[
    ["37", "text", ""],
    ["38", "text", ""],
    ["39", "text", userInputtedString]
]

userInputtedString 是: one word two words. Hello? "escape" lol

^ 或任何其他 Unicode 值

【问题讨论】:

  • 实际上是您在请求中得到的吗?如果是这样的话,发帖的那部分人似乎有点搞砸了。
  • 或者你在某处有一个附加斜杠,或者可能打开了魔术引号,或者两者兼而有之。等
  • @JonStirling 是的,它只是来自 Javascript 作为 AJAX 参数。只需使用 javascript 中数组上的标准 JSON.stringify() 即可。太奇怪了……

标签: php arrays json decoding string-decoding


【解决方案1】:

在 json_decode 之前使用 utf8_encode

$str = "[[\"37\",\"text\",\"\\\"\\\"\"],[\"38\",\"text\",\"\\\"\\\"\"],[\"39\",\"text\",\"\\\"one word two words. Hello? \\\\\\\"escape\\\\\\\" lol\\\"\"]]";
$str = utf8_encode($str);
$str = json_decode($str,JSON_UNESCAPED_SLASHES);

【讨论】:

  • 这个解决了,谢谢。在通过 POST 传递输入之前,我必须在 Javascript 中执行 utf8 编码
【解决方案2】:

似乎是什么问题?

像你提到的那样简单地使用 json_decode。

$ans = json_decode($_POST["name-of-var"]);

应该这样做。

【讨论】:

  • 它只返回 NULL。对不起,我应该更具体的
  • 啊,有趣,看起来我的 POST 输入没有经过处理。谢谢!
【解决方案3】:

您也可以使用 uft8_encode(发送到 HTML)和 uft8_decode(接收),但不是正确的方式

【讨论】:

    猜你喜欢
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2015-01-17
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多