在PHP中向json源URL添加/更改查询

时间:2017-08-17 13:36:30

标签: php json filter

我有一个JSON文件,用于通过PHP在我的页面中显示信息。我可以使用以下查询更改JSON结果的显示:

  • ?page = 1(默认情况下会加载10个条目)
  • ?没有fromdate = 2017年8月17日
  • ?sorton =国家

但是,我使用file_get_contentsjson_decode的基本网址。有没有办法可以稍后更改/添加查询到这个URL,例如循环,所以我可以根据我在前端做出的选择创建分页/过滤选项?

加载JSON的代码:

    $opts = array(
    'http'=>array(
        'header'=>"X-AUTH-TOKEN: 34c4c7d79....."
    )
);

$context        = stream_context_create($opts);  
$url            = 'https://urlgoeshere.com'; 
$data           = file_get_contents($url, true, $context); 
$result         = json_decode($data);

1 个答案:

答案 0 :(得分:0)

设置基本网址后,您可以使用http_build_query添加在前端选择的选项的查询字符串。

$url = 'https://urlgoeshere.com';

您需要一系列选项。

$options = ['page' => 1, 'fromdate' => '2017-08-17', 'sorton' => 'Country'];

如何创建该数组取决于您如何从前端传递选项值。这是一个使用$_POST值或默认值的示例,如果没有设置相关键。

$options = [
    'page' => filter_input(INPUT_POST, 'page') ?? 1,
    'fromdate' => filter_input(INPUT_POST, 'fromdate') ?? date('Y-m-d'),
    'sorton' => filter_input(INPUT_POST, 'sorton') ?? 'Country'
];

然后,您可以构建查询并将其附加到基本URL。

$query = http_build_query($options);
$data = file_get_contents("$url?$query", true, $context);