php到json:阅读文件返回php代码

时间:2013-10-02 08:09:21

标签: php json

我正在尝试设置一个php脚本,它将一些db条目返回给json文件。当我从另一个网站读取它时,该脚本似乎正在工作,但是,当我尝试从同一个文件夹中读取输出时(出于测试目的),它不起作用。 用于生成json的php代码:

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 01 Jan 1996 00:00:00 GMT');
header('Content-type: application/json');
//snipped sql magic
echo json_encode($rows);

当我访问我网站上的页面时,它将返回预期的内容:

[{"id":96,"name":"name1"},{"id":39,"name":"name2"}]

到目前为止一切顺利。 但是,当我尝试在同一文件夹中的另一个php文件中读取此文件的输出时,如

$json = file_get_contents(urlencode('json.php')); //same result without the urlencode
echo var_dump($jsonData);

它将返回 php代码,而不是json文件的内容。 我不明白为什么会这样。 有什么想法吗?

2 个答案:

答案 0 :(得分:3)

这是完全正常的。方法'file_get_contents'读取文件的内容,它不会执行它包含的php脚本。

你可以使用'include'或'curl'来做到这一点。

'include'将读取文件并将其包含的php脚本插入当前脚本。 'curl'会调用一个URL,所以它实际上会向你的服务器询问php文件。

当您在脚本中使用“标题”时,会说“卷曲”是您所需要的,但也许“包含”就足够了。

这是一个CURL示例:

$ch = curl_init("http://localhost/your/script.php");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);

$json = json_decode(curl_exec($ch));
curl_close($ch);

更多信息:

file_get_contents : http://php.net/manual/fr/function.file-get-contents.php
include : http://php.net/manual/fr/function.include.php
curl : http://php.net/manual/fr/book.curl.php

答案 1 :(得分:0)

您只需在测试文件中返回json_encode个数据。

// json_data.php 
return json_encode(array(
    'id' => 5,
    'name' => 'John'
));

使用include

检索这些数据
header('Content-Type: application/json');
$json = include 'json_data.php';
echo urlencode($json);

或者您甚至可以在urlencode脚本中返回已经json_data.php的数据。

return urlencode(json_encode(array(
    'id' => 5,
    'name' => 'John'
)));

希望,这会对你有帮助。