2010-11-22 25 views
0

J'ai une fonction php qui récupère et renvoie les données tweets de twitter comme objet simplexml. Je pourrais obtenir son contenu en utilisant la syntaxe php. Voici fonction phpComment puis-je obtenir le contenu de l'objet tableau simpleXML lorsque je le code dans JSON?

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

Si je l'appelle comme

$xml = searchResults('xyz'); 

je pourrais chercher son contenu comme

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

Maintenant, je dois retourner à partir de la fonction php au format JSON. Comme

return json_encode($xml); 

malgré

return $xml; 

Alors, comment puis maintenant je reçois même « contenu » et « author-> nom » etc contenu de au format JSON quand je décode JSON.

+1

Pas un répondez mais notez que vous pouvez utiliser 'simplexml_load_file ($ url)' directement si vous n'avez pas besoin d'options curl spéciales. –

Répondre

1

Cela dépend. Si vous accédez à revenir de PHP, il y a deux façons:

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

ou

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

Si vous accédez à l'aide de JavaScript, il devrait être:

alert(jsObject.author.name); 
+0

Comment faire une boucle sur l'objet json.J'utilise ce format "$ obj = json_decode ($ json); echo $ obj-> author-> name;" Comme je pouvais boucle à travers xml "foreach ($ xml-> entrée en état de $) {echo status-> contenu; }" – XCeptable

+0

Oui, vous pouvez utiliser 'foreach' sur un objet' stdClass' (ie: ce ' json_decode' renvoie). – netcoder

2

Si vous n'avez pas besoin du XML pour toute autre raison que de le renvoyer en JSON, pourquoi ne pas utiliser le format json comme réponse à l'appel API Twitter? http://search.twitter.com/search.json?q=blablabla Ceci renvoie la réponse dans une chaîne JSON que vous pourriez simplement retourner.

Je réécrire votre code comme ceci:

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

?>