用 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.
我有一个 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.