Return to Snippet

Revision: 47145
at June 1, 2011 15:10 by richardmaisano


Updated Code
<?php
// define the parameters you want to use
$username = 'richardmaisano';
$tweet_count = '10';

// define the api url
$url = 'https://api.twitter.com/1/statuses/user_timeline.json?screen_name=' . $username . '&count=' . $count . '&include_entities=1&include_rts=1';

// define the cache file you created
$cache = dirname(__FILE__) . '/caches/twitter';

// check to see if the cache is older than five minutes
// if so, refresh the data
$cache_time = filemtime($cache);
$five_minutes = time() - 300;

if ($cache_time > $five_minutes)
{
	$data = file_get_contents($cache);
}
else
{
	$data = file_get_contents($url);
	$cachefile = fopen($cache, 'wb');
	fwrite($cachefile, $data);
	fclose($cachefile);
}

// set up the json return
$json = json_decode($data);

// the rest of the script just parses through the data,
// namely the date and time of tweet and any 'entities'
if (!empty($json)) :
	foreach ($json as $tweet) : 
		$datetime = $tweet->created_at;
		$date = date('M d, Y', strtotime($datetime));
		$time = date('g:ia', strtotime($datetime));
		$tweet_text = $tweet->text;

		// check if any entites exist and if so, replace then with hyperlinked versions
		if (!empty($tweet->entities->urls) || !empty($tweet->entities->hashtags) || !empty($tweet->entities->user_mentions)) {
			foreach ($tweet->entities->urls as $url) {
				$find = $url->url;
				$replace = '<a href="'.$find.'">'.$find.'</a>';
				$tweet_text = str_replace($find,$replace,$tweet_text);
			}
							
			foreach ($tweet->entities->hashtags as $hashtag) {
				$find = '#'.$hashtag->text;
				$replace = '<a href="http://twitter.com/#!/search/%23'.$hashtag->text.'">'.$find.'</a>';
				$tweet_text = str_replace($find,$replace,$tweet_text);
			}
							
			foreach ($tweet->entities->user_mentions as $user_mention) {
				$find = "@".$user_mention->screen_name;
				$replace = '<a href="http://twitter.com/'.$user_mention->screen_name.'">'.$find.'</a>';
				$tweet_text = str_ireplace($find,$replace,$tweet_text);
			}
		}
	?>
				
	<div class="entry tweet">
		<span><?php echo $tweet_text; ?></span>
		<div class="meta">
			<small><?php echo $time; ?>, <?php echo $date; ?></small>
		</div>
	</div>
				
	<?php endforeach; ?>
<?php endif; ?>

Revision: 47144
at June 1, 2011 15:09 by richardmaisano


Updated Code
<?php
// define the parameters you want to use
$username = 'richardmaisano';
$tweet_count = '10';

// define the api url
$url = 'https://api.twitter.com/1/statuses/user_timeline.json?screen_name=' . $username . '&count=' . $count . '&include_entities=1&include_rts=1';

// define the cache file you created
$cache = dirname(__FILE__) . '/caches/twitter';

// check to see if the cache is older than five minutes
// if so, refresh the data
$cache_time = filemtime($cache);
$five_minutes = time() - 300;
if ($cache_time > $five_minutes)
{
	$data = file_get_contents($cache);
}
else
{
	$data = file_get_contents($url);
	$cachefile = fopen($cache, 'wb');
	fwrite($cachefile, $data);
	fclose($cachefile);
}

// set up the json return
$json = json_decode($data);

// the rest of the script just parses through the data,
// namely the date and time of tweet and any 'entities'
if (!empty($json)) :
	foreach ($json as $tweet) : 
		$datetime = $tweet->created_at;
		$date = date('M d, Y', strtotime($datetime));
		$time = date('g:ia', strtotime($datetime));
		$tweet_text = $tweet->text;

		// check if any entites exist and if so, replace then with hyperlinked versions
		if (!empty($tweet->entities->urls) || !empty($tweet->entities->hashtags) || !empty($tweet->entities->user_mentions)) {
			foreach ($tweet->entities->urls as $url) {
				$find = $url->url;
				$replace = '<a href="'.$find.'">'.$find.'</a>';
				$tweet_text = str_replace($find,$replace,$tweet_text);
			}
							
			foreach ($tweet->entities->hashtags as $hashtag) {
				$find = '#'.$hashtag->text;
				$replace = '<a href="http://twitter.com/#!/search/%23'.$hashtag->text.'">'.$find.'</a>';
				$tweet_text = str_replace($find,$replace,$tweet_text);
			}
							
			foreach ($tweet->entities->user_mentions as $user_mention) {
				$find = "@".$user_mention->screen_name;
				$replace = '<a href="http://twitter.com/'.$user_mention->screen_name.'">'.$find.'</a>';
				$tweet_text = str_ireplace($find,$replace,$tweet_text);
			}
		}
	?>
				
	<div class="entry tweet">
		<span><?php echo $tweet_text; ?></span>
		<div class="meta">
			<small><?php echo $time; ?>, <?php echo $date; ?></small>
		</div>
	</div>
				
	<?php endforeach; ?>
<?php endif; ?>

Revision: 47143
at June 1, 2011 14:59 by richardmaisano


Initial Code
<?php
	// define the parameters you want to use
	$username = 'richardmaisano';
	$tweet_count = '10';
	
	// define the api url
	$url = 'https://api.twitter.com/1/statuses/user_timeline.json?screen_name=' . $username . '&count=' . $count . '&include_entities=1&include_rts=1';
	
	// define the cache file you created
	$cache = dirname(__FILE__) . '/caches/twitter';

	// check to see if the cache is older than five minutes
	// if so, refresh the data
	$cache_time = filemtime($cache);
	$five_minutes = time() - 300;
	if ($cache_time > $five_minutes)
	{
		$data = file_get_contents($cache);
	}
	else
	{
		$data = file_get_contents($url);
		$cachefile = fopen($cache, 'wb');
		fwrite($cachefile, $data);
		fclose($cachefile);
	}

	// set up the json return
	$json = json_decode($data);

	// the rest of the script just parses through the data,
	// namely the date and time of tweet and any 'entities'
	if (!empty($json)) :
		foreach ($json as $tweet) : 
			$datetime = $tweet->created_at;
			$date = date('M d, Y', strtotime($datetime));
			$time = date('g:ia', strtotime($datetime));
			$tweet_text = $tweet->text;

			// check if any entites exist and if so, replace then with hyperlinked versions
			if (!empty($tweet->entities->urls) || !empty($tweet->entities->hashtags) || !empty($tweet->entities->user_mentions)) {
				foreach ($tweet->entities->urls as $url) {
					$find = $url->url;
					$replace = '<a href="'.$find.'">'.$find.'</a>';
					$tweet_text = str_replace($find,$replace,$tweet_text);
				}
							
				foreach ($tweet->entities->hashtags as $hashtag) {
					$find = '#'.$hashtag->text;
					$replace = '<a href="http://twitter.com/#!/search/%23'.$hashtag->text.'">'.$find.'</a>';
					$tweet_text = str_replace($find,$replace,$tweet_text);
				}
							
				foreach ($tweet->entities->user_mentions as $user_mention) {
					$find = "@".$user_mention->screen_name;
					$replace = '<a href="http://twitter.com/'.$user_mention->screen_name.'">'.$find.'</a>';
					$tweet_text = str_ireplace($find,$replace,$tweet_text);
				}
			}
?>
				
		<div class="entry tweet">
			<span><?php echo $tweet_text; ?></span>
				<div class="meta">
					<small><?php echo $time; ?>, <?php echo $date; ?></small>
				</div>
			</div>
				
<?php
		endforeach;
	endif;
?>

Initial URL
http://www.richardmaisano.com/php-json-twitter-api

Initial Description
Nothing revolutionary, just a simple implementation.

A reworking from Brian Cray's source code:
http://briancray.com/2009/08/21/tweeted-links-twitter-api-php-cache/

Note: requires creating a cache file, '/caches/twitter', relative to source.

Initial Title
PHP + JSON + Twitter API

Initial Tags
php, simple, json, twitter

Initial Language
PHP