如何在json文件中插入现有的php字符串文字?

Vip*_*pin 14 php json

我有一个PHP脚本,它通过使用json文件访问file_get_contents()json文件,我们已经声明了一个php变量.请让我知道有没有办法解析json文件中的php变量.

下面是代码:test.json

{
    "result":"$result",
    "count":3
}
Run Code Online (Sandbox Code Playgroud)

用于访问json文件的php脚本

<?php
$result = 'Hello';
$event = file_get_contents('test.json');
echo $event;
?>
Run Code Online (Sandbox Code Playgroud)

现在输出如下:

{ "result":"$result", "count":3 } 
Run Code Online (Sandbox Code Playgroud)

但我需要像这样的输出

{ "result":"Hello", "count":3 } 
Run Code Online (Sandbox Code Playgroud)

我无法访问$resultjson文件中的变量.任何帮助Appreciated.Thanks

Dav*_*hen 13

我可能会因此而被投票,但是在这种情况下可以使用吗?

<?php

$json = '{
    "result":"$result",
    "count":3
}'; //replace with file_get_contents("test.json");

$result = 'Hello world';



$test = eval('return "' . addslashes($json) . '";');
echo $test;
Run Code Online (Sandbox Code Playgroud)

输出:

{
    "result":"Hello world",
    "count":3
}
Run Code Online (Sandbox Code Playgroud)

  • @Phil它要么是,要么构成你自己的解析方案(这将比eval IMO好得多). (2认同)
  • 请记住,PHP将插入以`$`开头的所有内容,结果可能甚至不再是有效的JSON. (2认同)

Ja͢*_*͢ck 9

首先解析结构时插入这个并不难; 然后,您可以使用array_walk()迭代数组中的每个元素并更改值,如果它匹配以以下内容开头的内容$:

$json=<<<'JSON'
{
    "result":"$result",
    "count":3
}
JSON;

// parse data structure (array)
$data = json_decode($json, true);

// define replacement context
$context = ['$result' => 'Hello'];
// iterate over each element
array_walk($data, function(&$value) use ($context) {
    // match value against context
    if (array_key_exists($value, $context)) {
        // replace value with context
        $value = $context[$value];
    }
});

echo json_encode($data); // {"result":"Hello","count":3}
Run Code Online (Sandbox Code Playgroud)

显而易见的优点是您不必担心转义字符串,从而不会违反JSON格式.

如果数据结构是递归的,您可以array_walk_recursive()改为使用.