2010-11-22 7 views
0

私はtwitterからツイートデータを取り出し、simplexmlオブジェクトとして返すphp関数を持っています。私はその内容をPHP構文を使って得ることができます。ここで私は、私は今、私はJSON形式のPHP関数からそれを返す必要がJSONにエンコードすると、simpleXML配列オブジェクトの内容をどのように取得できますか?

echo $xml->content.''.$xml->author->name; 

のように、その内容をフェッチすることができ

$xml = searchResults('xyz'); 

のようにそれを呼び出した場合、PHPの関数

<?php 

    function searchResults($q) { 
    $host = "http://search.twitter.com/search.atom?q=" . urlencode($q) . "&rpp=100"; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $host); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

    //Raw xml 
    $result = curl_exec($ch); 
    curl_close($ch); 
    $xml = simplexml_load_string($result); 
    return $xml; 
    }    
?> 

です。

return $xml; 

にもかかわらず、同様

return json_encode($xml); 

私はJSONをデコードする際に、どのように今私は同じ「コンテンツ」とJSONフォーマットで、それから「ですauthor->名」などの内容を取得します。

+1

ありません特別なカールオプションが必要ない場合は、 'simplexml_load_file($ url)'を直接使うことができるかもしれないことに注意してください。 –

答えて

1

。あなたが戻ってPHPからそれにアクセスしている場合は、2つの方法があります。

$obj = json_decode($json); 
echo $obj->author->name; 

または

$arr = json_decode($json, true); 
echo $arr['author']['name']; 

JavaScriptを使用してアクセスしている場合、それは次のようになります。

alert(jsObject.author.name); 
+0

jsonオブジェクトをループするにはどうすればいいですか?この形式は "$ obj = json_decode($ json); echo $ obj-> author-> name;"という形式を使用します。 私はxmlをループすることができます "foreach($ xml-> entry as $ status){ echo status-> content; }" – XCeptable

+0

はい、 'stdClass'オブジェクトで' foreach'を使うことができます。 json_decode'が返す)。 – netcoder

2

JSONとして返す以外の理由でXMLが必要ない場合は、Twitter API呼び出しの応答としてjson形式を使用しないでください。 http://search.twitter.com/search.json?q=blablabla これは返すことのできるJSON文字列の応答を返します。

私はこのようにあなたのコードを書き換えるだろう:それは依存

<?php 

function searchResults($q) { 
    $host = "http://search.twitter.com/search.json?q=" . urlencode($q) . "&rpp=100"; 

    $raw_json = file_get_contents($host); 

    return $raw_json; 
} 

?> 
関連する問題