Im letzten Monat hatte ich ein kurzes Tutorial zur Suche nach Hashtags in der Twitter Search API geschrieben. Darauf kam eine Anfrage, wie den eine einfache Twitter-Wall mit PHP zu realisieren sei. Auch das ist ganz einfach – hier sollte man die Parameter since_id verwenden um immer nur die neuesten Tweets nachzuladen. Im folgenden Beispiel wurde das ganz einfach mit einem Meta-Refresh der Seite realisiert. Schöner wäre dies mit Ajax, aber um das Beispiel möglichst einfach zu halten habe ich darauf verzichtet:
<?php
// Tutorial: Eine einfache Twitter-Wall im Eingenbau
// http://frank-it-beratung.com/blog/
session_start();
// Suche nach Hashtag...
$hashtag="design";
$APIurl = "http://search.twitter.com/search.json";
// Refreh-Url mit since_id ggf aus Session laden
if (!isset($_SESSION['refresh_url'])) {
$param="?q=%23".$hashtag;
} else {
$param=$_SESSION['refresh_url'];
}
$APIurl.=$param;
// weitere Paramter für die Suche siehe
// https://dev.twitter.com/docs/using-search
// GET vorbereiten
$opts = array('http' =>
array(
'method' => 'GET'
)
);
// mit file_get_contents versenden
$result = file_get_contents($APIurl, false, stream_context_create($opts));
$json=json_decode($result);
// since_id in Session speichern
$_SESSION['refresh_url']=$json->refresh_url;
// neue Ergebnisse seit der letzten Suche
$neueergebnisse="";
for ($i = 0; $i < count($json->results); $i++) {
$neueergebnisse.="<img src='".$json->results[$i]->profile_image_url;
$neueergebnisse.="' align='left' width='48' height='48' hspace='5' />";
$neueergebnisse.=$json->results[$i]->from_user;
$neueergebnisse.=" (ID: " .$json->results[$i]->from_user_id .")<br/>";
$neueergebnisse.="<strong style='font-size:20pt;'>";
$neueergebnisse.=utf8_decode($json->results[$i]->text)."</strong>";
$neueergebnisse.="<br/>";
$neueergebnisse.="Datum: ". $json->results[$i]->created_at;
$neueergebnisse.=" (Tweet-ID: " . $json->results[$i]->id_str.")";
$neueergebnisse.="<hr/>";
}
// Alte Ergebnisse aus Session holen
// besser wäre hier u. U. Speicherung in einer Datenbank
if (isset($_SESSION['altetreffer'])) {
$altetreffer=$_SESSION['altetreffer'];
} else {
$altetreffer="";
}
// Alte und neue zusammenfügen und in Session legen
$alletreffer=$neueergebnisse . $altetreffer;
$_SESSION['altetreffer']=$alletreffer;
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Twitter-Wall Tutorial</title>
<?php
// optimal wäre eine Ajax-Lösung, aber hier ganz einfach
// mit einem Refresh alle 60 Sekunden (Achtung: Rate Limit!)
?>
<meta http-equiv="refresh" content="60; URL=Twitterwall-Tutorial.php">
</head>
<body>
<h1>Twitter-Wall für #<?php echo $hashtag ?></h1>
Anzahl neuer Treffer: <?php echo count($json->results); ?>
am <?php echo date("d.m.Y H:m:i"); ?> Uhr
<hr/>
<?php echo $alletreffer; ?>
</body>
</html>
P.S.
Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne – einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstmöglich. Unternehmen, die Unterstützung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management benötigen finden zudem entsprechende Angebote meiner Firma auf der Website www.Frank-IT-Beratung.de

fb.com/mySocialWebDevBlog
@Simon_A_Frank
Sorry, auch dieser Artikel war versehentlich einige Tage „unsichtbar“ und ist jetzt wieder online!