【问题标题】:eval() with file_get_contents() .. different resultseval() 和 file_get_contents() .. 不同的结果
【发布时间】:2020-03-23 09:05:18
【问题描述】:

我正在尝试将 eval() 与 json_decode(file_get_contents()) 一起使用,并且在对值进行评估和硬编码时得到了不同的结果。我只是错过了一些简单的事情吗?

我使用的是 PHP 版本 5.3.24,目前无法更改。如果对 eval() 支持至关重要,我可以开始对其进行更改。我没有发现任何表明我在当前的 PHP 实现中不支持 eval() 的信息。

当我运行 Example1('key') 时,我从 eval() 函数返回 NULL。当我运行 Example2('key') 时,我得到一个基于 json 数据的数组,如下所示:

{ key_list: [ { data1_list: [ { subkey1: "data", subkey2: 0 }, .. ], .. ] }

这里是 Example1():

function Example1($key) {

    $endPoint = 'http:'.'//some.website.com/json/'.$key;

    $evalCommand = sprintf('json_decode(file_get_contents("%s"))->%s_list[0];', $endPoint, $key);

    echo '$evalCommand = |'.$evalCommand.'|<br />';

    $resultsArray = eval($evalCommand);

    return $resultsArray;
}

这里是 Example2():

function Example2($key) {

    $endPoint = 'http:'.'//some.website.com/json/'.$key;

    $resultsArray = json_decode(file_get_contents($endPoint))->key_list[0];

    return $resultsArray;
}

【问题讨论】:

    标签: php json eval file-get-contents


    【解决方案1】:

    而不是使用eval,它也许可以使用更标准的代码并使用动态对象访问。

    URL 的名称是可以的,但是对于该字段,有一些杂耍。这将名称设置为$field,但我无法让它在一行中完成该部分和数组部分。这里它使用-&gt;$field 来获取数据,而[0] 正在返回...

    function Example2($key) {
        $endPoint = 'http://some.website.com/json/'.$key;
    
        $field = $key.'_list';
        $resultsArray = json_decode(file_get_contents($endPoint))->$field;
    
        return $resultsArray[0];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多