用 PHP 解析维基百科 API

Parsing Wikipedia API with PHP

我有一个 PHP 脚本,它从维基百科 API 检索 JSON 结果并将其存储在 $json 变量中,然后我 json将其解码为 $data:

<?php

$q = htmlspecialchars(($_GET["q"]));

$url = 'https://en.wikipedia.org/w/api.php?action=query&list=search&srnamespace=0&srprop=snippet&format=json&callback=json&origin=*&prop=links|extracts|categories|images&srsearch=test';
$json = file_get_contents($url);

/*
print "<pre>";print_r($json);print "</pre>";
*/

$data = json_decode($json,true);
echo $data['query']['search'][0]['title'];

这会检索 JSON 文件,但我无法使用它。我需要提取 Title 标签并像这样回显它没有任何作用。

echo $data['query']['search'][0]['title'];

知道如何更正我的代码以检索以下标题标签:

从您的 URL 中删除 &callback=json。那是在请求 JSONP(具有讽刺意味的 link 维基百科)。它用 JavaScript 回调函数包装响应,所以你需要 PHP 而不是 JSON,你得到

/**/json(THE JSON HERE)

您可以在页面源代码中看到它,即使它在页面上显示为 JSON。这些额外的字符使 json_decode 失败。该参数更多用于JS的跨域请求。

看起来您已经使用

正确访问了生成的数组
echo $data['query']['search'][0]['title'];

您可能认为当您在 $data 为 null 时尝试访问这些数组键时它会给您某种警告或通知,但是 it won't.