我在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没问题,但没有代码。
答案 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('<', '<', 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);