Twitter APIを利用してタイムラインを表示する方法

このサイトのトップページではTwitter APIを利用して、僕のタイムラインを表示しています(実際は、Twitter意外にもいろいろ混ぜて表示していますけどね)。

そんな難しくないし、さんざん既出だと思うけど、とりあえず自分用まとめ。

Twitter APIからXMLを取得

function get_twitter_api($feed){
	$_ret = array();
	$page = file_get_contents($feed);
	$rss = simplexml_load_string($page);
	foreach($rss->status as $value){
		$value['myPage'] = 'http://twitter.com/'.$value->user->screen_name;
		// 日付を統一変数に
		$value['datetime'] = $value->created_at;
		// リンク、タイトル
		$value['link'] = 'http://twitter.com/'.$value->user->screen_name.'/statuses/'.$value->id;
		$_ret[] = $value;
	}
	return $_ret;
}

上記でXMLが取得できます。上記では省いていますが、キャッシュ処理など適宜実装してください。

取得したXMLを出力

ここで、Twitter APIが返す本文はリンクが取れているので、リンクと@にはリンクが付くように加工します。
出力のフォーマットは適宜ご自身の都合に合わせて加工してください。

// テキスト加工
function twitter_text($str){
	$str = preg_replace("/https?:\/\/[a-zA-Z0-9;\/?:@&=\+$,\-_\.!~*'\(\)%#]+/",'<a href="$0" rel="external">$0</a>',$str);
	$str = preg_replace("/@([A-Za-z0-9_]+)/",'<a href="http://twitter.com/$1" rel="external">@$1</a>$2',$str);
	return $str;
}

// XML取得
$feed = get_twitter_api('http://twitter.com/statuses/user_timeline/inc2734.xml');

// 出力用html生成、出力
foreach($feed as $item){
	// 日付を加工
	$date = date('M d,Y H:i:s',strtotime($item[datetime]));
	$_ret .= '<dl>';
	$_ret .= '<dt><a href="'. $item&#91;'link'&#93;.'" rel="external">'.$date.'</a> <a href="'.$item&#91;'myPage'&#93;.'" rel="external">Twitter</a></dt>';
	$twitterText = twitter_text($item->text);
	$_ret .= '<dd>'.$twitterText.'</dd>';
	$_ret .= '</dl>';
}
echo $_ret;

以上!

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。