2010-11-22 2 views
0

Ich habe eine PHP-Funktion, die Tweets-Daten von twitter als simplexml-Objekt abruft und zurückgibt. Ich könnte den Inhalt mit der PHP-Syntax abrufen. Hier ist PHP-FunktionWie kann ich den Inhalt des simpleXML-Array-Objekts erhalten, wenn ich es in JSON kodiere?

<?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; 
    }    
?> 

Wenn ich es nennen wie

$xml = searchResults('xyz'); 

ich seinen Inhalt wie

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

holen konnte Jetzt muss ich es von PHP-Funktion im JSON-Format zurückzukehren. Wie

return json_encode($xml); 

trotz

return $xml; 

So wie jetzt bekomme ich gleichen 'Inhalt' und 'author-> Namen' usw. Inhalt von ihm im JSON-Format, wenn ich json dekodieren.

+1

Nicht ein Beantworten Sie bitte, dass Sie 'simplexml_load_file ($ url)' direkt verwenden können, wenn Sie keine speziellen Curl-Optionen benötigen. –

Antwort

1

Es hängt davon ab. Wenn Sie es wieder aus PHP sind zugreifen, gibt es zwei Möglichkeiten:

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

oder

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

Wenn Sie es mit Hilfe von JavaScript zugreifen, sollte es sein:

alert(jsObject.author.name); 
+0

Wie durchschlinge ich Json-Objekt. Ich verwende dieses Format "$ obj = json_decode ($ json); echo $ obj-> author-> name;" Wie ich könnte durch xml "foreach ($ xml-> Eintrag als $ Status)" { echo status-> Inhalt; } " – XCeptable

+0

Ja, können Sie' foreach' auf einem 'stdClass' Objekt (dh: was' json_decode' kehrt zurück). – netcoder

2

Wenn Sie die XML aus keinem anderen Grund benötigen, als sie als JSON zurückzugeben, warum nicht das json-Format als Antwort für den Twitter-API-Aufruf verwenden? http://search.twitter.com/search.json?q=blablabla Dies gibt die Antwort in einer JSON-Zeichenfolge zurück, die Sie einfach zurückgeben könnten.

würde ich Code wie folgt umschreiben:

<?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; 
} 

?> 
Verwandte Themen