2010-12-11 5 views
0

, also verwende ich YQL, um die Abonnentenanzahl eines YouTube-Benutzers zu erhalten.PHP - Wählen Sie einen bestimmten Eintrag mit YQL

dies zu tun, ich mache eine Abfrage eine URL wie folgt aus:

$query = 'https://query.yahooapis.com/v1/public/yql?q='.urlencode("SELECT * FROM xml WHERE url='http://gdata.youtube.com/feeds/api/users/{$id}'").'&format=json&callback='; 

dann dekodieren ich die Antwort und finden Sie das Array-Eintrag für wie dieses Ich suche nach:

$response = json_decode($response, true); 
    $subscriber_count = $response['query']['results']['entry']['statistics']['subscriberCount']; 

es funktioniert gut, außer ich mag nicht die Art, wie ich das tue :) Ich meine, gibt es eine Möglichkeit, wie ich den subscriberCount Wert direkt von der $query URL oben bekommen kann? Ich brauche nicht das gesamte XML, nur diesen einen Eintrag.

+0

Was meinen Sie mit * "direkt von der' $ query' URL "*? – salathe

+0

Nun wird die Abfrage-URL an curl übergeben, die eine Anfrage an Yahoo für die XML-Datei sendet. Ich hatte gehofft, dass es einen Weg gibt, Yahoo nur die Daten anzufordern, die ich brauche, nicht die komplette XML-Struktur. – Alex

Antwort

1

Was Sie tun können, ist die Datenmenge zu begrenzen, die Sie wirklich in etw wie dies zu tun interessiert sind durch YQL auf die Daten zurückgegeben werden:

SELECT statistics.subscriberCount FROM xml WHERE ... 

Noch würden Sie einige strukturelle XML/JSON haben Elemente um die Anzahl, an der Sie interessiert sind, aber es ist weniger (siehe unten). Nicht sicher, ob das was du wolltest?

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" 
    yahoo:count="1" yahoo:created="2011-01-06T23:21:32Z" yahoo:lang="en-US"> 
    <results> 
     <entry xmlns="http://www.w3.org/2005/Atom"> 
      <yt:statistics 
       xmlns:yt="http://gdata.youtube.com/schemas/2007" subscriberCount="7"/> 
     </entry> 
    </results> 
</query>