2009-08-18 4 views
1

Im mit Simplexml, um die Twitter-Profil-Avatar-URL von der XML-Status-Seite zu erhalten.Verwenden von SimpleXML, um Twitter avatar url (komisch)

Dies ist der Code im

<? 
$username = twitter; 
$xml = simplexml_load_file("http://twitter.com/users/".$username.".xml"); 
echo $xml->user->profile_image_url; 
?> 

Die XML-Seite geladen mit, wenn ich es besuchen, aber aus irgendeinem Grund nichts Echo wird. Keine Fehler. Nichts.

Wenn ich es in einem Browser besuchen, bekomme ich diese:

<?xml version="1.0" encoding="UTF-8"?> 
<user> 
    <id>783214</id> 
    <name>Twitter</name> 
    <screen_name>twitter</screen_name> 
    <location>San Francisco, CA</location> 
    <description>Always wondering what everyone's doing.</description>  
    <profile_image_url>http://a1.twimg.com/profile_images/75075164/twitter_bird_profile_normal.png</profile_image_url> 
    <url>http://twitter.com</url>..... 
    (the rest is long and irrelevant to the question) 

Die Daten gibt es, warum es gewohnt Echo?

+2

Versuchen Sie var_dump ($ xml); – Greg

+0

Wow. Nachdem ich die Antworten gelesen habe, * muss * ich Sie nur wegen des völligen Versagens beim Lesen der Dokumentation abmelden. – Bombe

Antwort

6

Nach dem Laden des XML-Dokuments wird das Stammelement user durch das in $xml gespeicherte Objekt SimpleXMLElement dargestellt. Daher existiert $xml->user nicht.

sollte Dieses arbeiten:

<? 
$username = "twitter"; // <-- You did not use quotes here?! Typo? 
$xml = simplexml_load_file("http://twitter.com/users/".$username.".xml"); 
echo $xml->profile_image_url; // <-- No $xml->user here! 
?> 
+0

Also, wann immer ich eine XML-Datei wie folgt laden, zählen Sie den ersten Knoten aus? – mrpatg

+0

+1 für mich zu schlagen mit einer besseren Erklärung :) –

+0

Für die SimpleXML API, ja. Der Stammknoten wird durch das Objekt dargestellt, das von simplexml_load _ *() zurückgegeben wird. –

2

Es ist, weil das Wurzelelement (in diesem Fall <user>) angedeutet wird - Sie es nicht angeben.

Versuchen Sie folgendes:

echo $xml->profile_image_url; 
-2

Twivatar

Zuvor hatte die einfachste Möglichkeit, die Twitter Avatar zu bekommen war Twivatar zu verwenden, die von Remy Sharp gebaut wurde. Der Dienst wurde jedoch inzwischen heruntergefahren.

Die Verwendung eines Drittanbieters ist nicht erforderlich.

+0

Die Verwendung eines Dritten ist unnötig und gefährlich. – ajt

0

Hey Leute - versucht Twivatar, aber ich bekam einen Fehler 500 Fehler ????

sowieso hier ist der Code, den ich am Ende mit - wie es hilfreich

<?php 
if (isset($_REQUEST['user'])) 

//if "user" is filled out, get the user's twitter picture 

    { 
$username = $_REQUEST['user']; 
}else{ 
$username = 'aplusk'; 

//else lets use ashton kutcher's picture just for the F of it 

} // <-- You did not use quotes here?! Typo? 
$xml = simplexml_load_file("http://twitter.com/users/".$username.".xml"); 
$timage = $xml->profile_image_url; // <-- No $xml->user here! 
header('location: ' . $timage); 
?> 

Jetzt ist es extrem einfach, dieses Skript aufrufen von überall einfach in der Anwendung drucken ...

<img src="http://mywebapp.org/timage.php?user=<php echo $data['twitter_screen_name'];?>" />