Here are two simple functions to display Twitter feeds on your website using PHP. The twitter_feed() function pulls the feed from Twitter RSS and returns it as a variable. This function also stores the feed in a database where it can be called in cases where the Twitter RSS feed is unavailable.
//Twitter Feed
function twitter_feed($username, $rss) {
$hostname_connection = "db_hostname";
$database_connection = "db_database";
$username_connection = "db_username";
$password_connection = "db_password";
$connection = mysql_pconnect($hostname_connection, $username_connection, $password_connection) or die(mysql_error());
$twitter_feed = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td class="content_twitter" valign="baseline"><a href="http://twitter.com/'.$username.'" target="_blank"><img src="twitter-follow-me.png" alt="Twitter" border="0" align="right"></a>';
$feedURL = $rss;
$doc = new DOMDocument();
if($doc->load($feedURL)) {
$arrFeeds = array();
foreach ($doc->getElementsByTagName('item') as $node) {
$itemRSS = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'pubDate' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
);
array_push($arrFeeds, $itemRSS);
}
$limit = 5;
for($x=0; $x<$limit; $x++) {
$title = str_replace('bavotasan: ', '', $arrFeeds[$x]['title']);
$string = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a class=\"twitter_link\" href=\"\\0\" target=\"_blank\">\\0</a>", $title);
$pattern = '/[#|@][^\s]*/';
preg_match_all($pattern, $string, $matches);
foreach($matches[0] as $keyword) {
$keyword = str_replace(")", "", $keyword);
$link = str_replace("#", "%23", $keyword);
$link = str_replace("@", "", $keyword);
if(strstr($keyword, "@")) {
$search = '<a href="http://twitter.com/'.$link.'" target="_blank">'.$keyword.'</a>';
}
else {
$link = urlencode($link);
$search = '<a href="http://twitter.com/#search?q='.$link.'" target="_blank">'.$keyword.'</a>';
}
$string = str_replace($keyword, $search, $string);
}
$length = strlen($string);
$string = substr($string, 15, $length);
$twitter_feed .= '<a href="http://twitter.com/'.$username.'" target="_blank">@'.$username.'</a>: '.$string.'<div class="twitter_time">'.twitter_time($arrFeeds[$x]['pubDate']).' via Twitter</div><br />';
}
$twitter_feed .= '</td></tr><tr><td align="right"><a href="http://twitter.com/'.$username.'" target="_blank">..::Follow Us!</a></td></tr></table>';
$updateSQL = sprintf('UPDATE twitter SET details="'.$twitter_feed.'" WHERE account="'.$username.'"');
mysql_select_db($database_connection, $connection);
mysql_query($updateSQL, $connection) or die(mysql_error());
}
else {
mysql_select_db($database_connection, $connection);
$query_twitter = sprintf('SELECT * FROM twitter WHERE account = "'.$username.'"');
$twitter = mysql_query($query_twitter, $connection) or die(mysql_error());
$row_twitter = mysql_fetch_assoc($twitter);
$totalRows_twitter = mysql_num_rows($twitter);
$twitter_feed = $row_twitter['details'];
}
return $twitter_feed;
}
The twitter_time() function takes the RSS time and converts it to human readable current server time.
//Twitter Time
function twitter_time($rss_time) {
$time = date('Hm', strtotime($rss_time));
$date = date('m/d/Y', strtotime($rss_time));
if($date == system_date()) {
if(system_time() - $time < 60) {
$time_result = system_time() - $time;
if($time_result <= 1) {$time_display = 'about a minute ago';}
else {$time_display = $time_result.' minutes ago';}
}
else {
$time_result = round(((system_time() - $time) / 60), 0);
if($time_result == 1) {$time_display = 'about '.$time_result.' hour ago';}
else {$time_display = 'about '.$time_result.' hours ago';}
}
}
else {
$time_result = date_difference($date, system_date());
if($time_result == 1) {$time_display = $time_result.' day ago';}
else {$time_display = $time_result.' days ago';}
if($time_result > 7) {
$date_explode = explode('/', $date);
if($date_explode[2] == date('Y')) {
$time = date('g:i A', strtotime($time));
$date = date('M jS', mktime('00', '00', '00', $date_explode[0], $date_explode[1], $date_explode[2]));
$time_display = $time.' '.$date;
}
else {
$time = date('g:i A', strtotime($time));
$date = date('M jS, Y', mktime('00', '00', '00', $date_explode[0], $date_explode[1], $date_explode[2]));
$time_display = $time.' '.$date;
}
}
}
return $time_display;
}
Usage:
echo twitter_feed('your Twitter username', 'the URL to your Twitter RSS feed page');