2013-06-18 17 views
5

jsonを使用してWikipediaからタイトルと説明を抽出したいと考えています。だから...ウィキペディアは私の問題ではない、私はjsonには新しく、使い方を知りたい。今、私のコードHERESに、私はチュートリアルの何百もあるけど、私は時間のために働いてきたし、それだけで何も表示されません: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"; 

    $json = file_get_contents($url); 
    $data = json_decode($json, TRUE); 

    $pageid = $data->query->pageids; 
    echo $data->query->pages->$pageid->title; 
?> 

それが簡単にクリックするだけので:

それで、あなたと私の将来の訪問者のために少し説明してください。私はとても混乱しています。 sed ...あなたが必要とするものは、私が言っていない、ちょうどそれをコメントする、私はそれを得ることができると確信して、事前に感謝!

+0

'jsonfm'を 'json'に変更します。 – halfer

+2

コードではなく、html表現のリンクではjsonfmしかありません。 –

+0

ああ、あなたは正しい@Joeelです。私はそれを変更します、ありがとう。 – halfer

答えて

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; 
+0

ありがとう.... [0]は正確に何を意味するのですか? – Connor

+1

配列から取得する要素のインデックスです。配列に '$ demo = array( 'hi'、 'my'、 'friend')'という3つの要素がある場合、 '$ demo [0]'は 'hi'になります、' $ demo [2] 'は'あなたのケースでは、配列に含まれている唯一の要素だけをすべて取得する必要はありません。だからあなたは '[0]'を使うのです。 – Alvaro

+0

説明してくれてありがとうございます。基本的には注文に応じてくれます。ありがとうございます。 – Connor

5

をあなただけの拳1を取得したい場合は、この操作を行う必要がありますそれはこれが好きです。これは、同じ呼び出しで複数のページが存在することをサポートします。

$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" 
} 
*/ 
+0

Helpfullですが、私は一度だけ努力するだけです。 – Connor

+1

Steveのソリューションがうれしいです。 :)良いスポーツのために –

+0

+1;) – Connor