我可以在PHP中解码JSON到数组,但是解码到数组时JSON中的某些数据会消失。
这是我的JSON文件
[
{
"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代码
$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);
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 ) )
我在Platform中的价值消失了。有人知道是什么问题吗?
答案 0 :(得分:4)
您的JSON包含HTML标记,当浏览器显示print_r()
的结果时,这些标记将被浏览器解释。使用浏览器的“查看源代码”命令查看原始输出,您应该会看到跨度。
您还可以使用htmlentities()
将它们转换为转义字符,浏览器将按原样显示。
$output = print_r($data, true);
echo "<pre>" . htmlentities($output, ENT_COMPAT) . "</pre>";
使用<pre>
也会保留格式。
答案 1 :(得分:-1)
为了将HTML保留在JSON中,您必须遵循多个规则:
<span class=\"class-name\"><\/span>
<\/span>
中转义正斜杠<img ... />
€
此外,您可以避免重复
<span>
标签,并像这样存储它们的类名:"platform": "battle-net",
或"platform": "xbox-live",
。