PHP json_decode无法从变量

时间:2016-01-22 07:42:11

标签: php json

我在PHP中构建json_decode()函数时遇到问题。我有followig json文件:

{
    "var1":"data1",
    "var2":"data2",
    "var3":"data3",
    "snippet":"<?php\n\necho \"hello world\";"
}

我想将代码保存在json文件中有多种原因,但json_decode()不想输出它。 以下是我用于获取数据的代码:

$str_data = file_get_contents("json_files/".$new.".json");
$data = json_decode($str_data,true);

后来我只是用它来获取所有数据:

echo $data['snippet'];

这对var1 / var2 / var2没问题,但没有代码。

4 个答案:

答案 0 :(得分:2)

如果您希望从字符串执行PHP脚本,可以使用eval() 但请记住,如果您没有正确清理数据,那么功能可能很危险。

您当前的代码不起作用,因为它是一个字符串,并且PHP解释器确实将其作为脚本标记提取,但由于安全原因而将其注释掉,因此它仅显示在html页面的源代码中。

按以下评论编辑:

$json = '{
  "var1":"data1",
  "var2":"data2",
  "var3":"data3",
  "snippet":"<?php\n\necho \"hello world\";"
}';

echo htmlentities(json_decode($json)->snippet);
echo htmlentities(json_decode($json, true)['snippet']);
echo str_replace('<', '&lt;', json_decode($json, true)['snippet']);

// Choose your method.. all works.

答案 1 :(得分:2)

测试以下内容:

<?php

echo "hello world";

给我以下输出:

{{1}}

如果您在浏览器中查看此内容,则可能没有看到它,因为浏览器读取的内容为HTML。

答案 2 :(得分:-1)

<?php
$json = '{
"var1":"data1",
"var2":"data2",
"var3":"data3",
"snippet":"?php\n\necho \"hello world\";"
}';
$data = json_decode($json);
header("Content-Type: text/html");
echo $data->snippet;
?>

我尝试使用上面的代码。经过一段时间后发现..&#34;&lt;&#34;导致php标记出现问题。

我认为你无法摆脱这个

答案 3 :(得分:-1)

使用var_dump查看数据是否正确?

$str_data = file_get_contents("json_files/".$new.".json");
var_dump($str_data);