首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JSON解码为PHP数组时某些数据丢失

将JSON解码为PHP数组时某些数据丢失
EN

Stack Overflow用户
提问于 2018-08-09 12:50:33
回答 2查看 71关注 0票数 2

我可以将PHP中的JSON解码为数组,但当解码为数组时,JSON中的一些数据会消失。

这是我的JSON文件

代码语言:javascript
复制
[
  {
    "name": "Games1",
    "price": "€ 25.53",
    "platform": "<span class=\"platform battle-net\"></span>",
    "region": "GLOBAL",
    "url": "localhost"
  },
  {
    "name": "Games2",
    "price": "€ 24.99",
    "platform": "<span class=\"platform xbox-live\"></span>",
    "region": "GLOBAL",
    "url": "localhost"
  }
]

这是我的php代码

代码语言:javascript
复制
$data = file_get_contents("game.json");
for ($i = 0; $i <= 31; ++$i) { 
    $data = str_replace(chr($i), "", $data); 
}

$data = str_replace(chr(127), "", $data);
if (0 === strpos(bin2hex($data), 'efbbbf')) {
   $data = substr($data, 3);
}

$data = json_decode($data,true);
print_r($data);

我的结果来自print_r($data);

代码语言:javascript
复制
    Array ( [0] => Array ( [name] => Games1 [price] => € 25.53 [platform] => [region] => GLOBAL [url] => localhost ) 
[1] => Array ( [name] => Games2 [price] => € 24.99 [platform] => [region] => GLOBAL [url] => localhost ) )

我在平台上的价值消失了。有人知道问题出在哪里吗?

EN

回答 2

Stack Overflow用户

发布于 2018-08-09 14:18:06

您的JSON包含HTML标记,当浏览器显示print_r()的结果时,浏览器会解释这些标记。使用浏览器的View Source命令查看原始输出,您应该可以看到跨度。

您还可以使用htmlentities()将它们转换为转义字符,浏览器将按原样显示转义字符。

代码语言:javascript
复制
$output = print_r($data, true);
echo "<pre>" . htmlentities($output, ENT_COMPAT) . "</pre>";

使用<pre>也会保持格式。

票数 4
EN

Stack Overflow用户

发布于 2018-08-09 13:36:34

为了将HTML保留在JSON中,您必须遵循多个规则:

在结束标记和自结束标记中

  1. Escape quotation marks `<span class=\"class-name\"><\/span>`
  2. Escape正斜杠,在斜杠和结束括号之间留一个空格。

<img ... />

  • Make sure to encode special character entities like this: `&euro;`

此外,您可以避免复制<span>标记,只需像这样存储它们的类名:"platform": "battle-net","platform": "xbox-live",

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51759056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档