我希望能够使用json从维基百科中提取标题和描述。所以...维基百科不是我的问题,我是json的新手,想知道如何使用它。现在我知道有数百个教程,但我已经工作了几个小时,它只是没有显示任何东西,继承我的代码:
<?php
$url="http://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&titles=google&format=json&explaintext&redirects&inprop=url";
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
$pageid = $data->query->pageids;
echo $data->query->pages->$pageid->title;
?>
这样更容易点击:
我知道我可能只是做了一件小事,但它确实让我烦恼,代码......我习惯使用xml,而且我刚刚做了切换,所以你能解释一下吗?这对我和未来的访客来说有点儿,因为我很困惑......你需要的任何东西,我都没有说过,只是评论一下,我相信我能得到它,并提前谢谢!
答案 0 :(得分:7)
$pageid
返回一个包含一个元素的数组。如果你只想获得第一个,你应该这样做:
$pageid = $data->query->pageids[0];
你可能收到了这个警告:
Array to string conversion
完整代码:
$url = 'http://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&titles=google&format=json&explaintext&redirects&inprop=url&indexpageids';
$json = file_get_contents($url);
$data = json_decode($json);
$pageid = $data->query->pageids[0];
echo $data->query->pages->$pageid->title;
答案 1 :(得分:5)
我这样做。它支持同一个呼叫中有多个页面。
$url = "http://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&titles=google&format=json&explaintext&redirects&inprop=url";
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
$titles = array();
foreach ($data['query']['pages'] as $page) {
$titles[] = $page['title'];
}
var_dump($titles);
/* var_dump returns
array(1) {
[0]=>
string(6) "Google"
}
*/
答案 2 :(得分:0)
尝试此操作将帮助您?% 这段代码是在Wikipedia的Wikipedia api的帮助下提取标题和描述
<?php
$url = 'http://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&titles=google&format=json&explaintext&redirects&inprop=url&indexpageids';
$json = file_get_contents($url);
$data = json_decode($json);
$pageid = $data->query->pageids[0];
$title = $data->query->pages->$pageid->title;
echo "<b>Title:</b> ".$title."<br>";
$string=$data->query->pages->$pageid->extract;
// to short the length of the string
$description = mb_strimwidth($string, 0, 322, '...');
// if you don't want to trim the text use this
/*
echo "<b>Description:</b> ".$string;
*/
echo "<b>Description:</b> ".$description;
?>