2016-07-18 34 views
-1

我正试图在我的页面上实现Tokenize2。代码从JSON源提取数据的我可以在动态生成的JSON输出上使用file_get_contents()吗?

部分涉及这一行:

$obj = json_decode(file_get_contents('search_list.json'), true);

我有一个search_list.php,我从MySQL数据库中提取数据,并生成JSON内容。但如果我将search_list.php放入file_get_contents(),它似乎不起作用。有没有办法解决这个问题?谢谢。

+0

您将不得不向HTTP服务器*发出请求,以便实际执行PHP,例如, 'HTTP://本地主机/ search_list.php'。但是,因为您正在执行PHP,将一些结果编码为JSON,通过HTTP输出JSON,读取HTTP并将JSON解码为PHP数组.....只需跳过所有中间件,并直接执行与PHP相同的PHP代码在'search_list.php'中;也许你只需要把这个逻辑放到一个你可以“包含”和调用的函数中。 – deceze

+0

'allow_url_fopen'必须在您的服务器上打开 - 检查php设置。其他选项提供在http://stackoverflow.com/questions/3488425/php-ini-file-get-contents-external-url – dbmitch

回答

2

file_get_contents()不执行代码。它只是吸取了一些字节,基本上是fopen(); fread(); fclose()的封装。而已。

您必须为include脚本,例如,

ob_start(); 
include('yourscript.php'); 
$json = ob_end_clean(); 

,但在这一点上,你应该问自己,而你要包括/执行该脚本,迫使它来生成一个JSON字符串,撕开这JSON字符串到一个PHP数组中的所有麻烦再次。 cpu资源的总体和绝对浪费。

你应该做的更好的东西,如:

function whatever($output = 'json') { 
     ... build data structure 
     if ($output == 'json') { 
     echo json_encode($data); 
     } else 
     return $data; 
     } 
    } 

它已经PHP代码,您已经有了一个PHP数据结构中的所有数据,那么为什么数据 - > json-的浪费一步>数据?

+0

感谢您的建议,我会给这个尝试。我有一些使用我的PHP脚本作为数据源的自动完成代码,并且它很好地接受了它,这就是我试图重用它的原因。我会稍微调整一下数据,所以我会遵循你的后一项建议。 – eluong

相关问题