5

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の使用に慣れていて、切り替えを行ったばかりです。私のために、そして将来の訪問者のために、私は非常に混乱しているので...私が言っていない必要があるものは何でも、コメントしてください。私はそれを手に入れることができると確信しています。

4

3 に答える 3

7

$pageid要素が 1 つの配列を返していました。最初のものだけを取得したい場合は、これを行う必要があります。

$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;
于 2013-06-18T10:47:13.900 に答える
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"
}
*/
于 2013-06-18T10:48:18.730 に答える