How To Display Twitter Profile Picture On My Website

Hi Everyone,

I've found interesting code at @

I can display the timeline but i can not display the image (profile image of selected person)

Can someone help?
$name = 'andy_murray';
if( !file_exists("twitter$name.cache.txt") || filemtime("twitter$name.cache.txt") < time() - 300 ) {
    file_put_contents("twitter$name.cache.txt", file_get_contents("$name.rss"));
$items = simplexml_load_string( file_get_contents("$name.rss") )->xpath("/rss/channel/item/title[not(starts-with(.,\"$name: @\"))]/..");
echo '<?xml version="1.0" encoding="UTF-8"?>';
    <h1><a typeof="foaf:OnlineAccount" rel="foaf:accountServiceHomepage" resource="" property="foaf:accountName" href="<?php echo 
$name; ?>/">
<?php echo $name; ?></a></h1>
<div id="myTwitter">
	foreach( $items as $tweet) {
		$diff = Timesince(strtotime($tweet->pubDate));
		$link = $tweet->link;
		$post = preg_replace( '|([^\s])\s+([^\s]+)\s*$|', '$1&nbsp;$2',
						substr($tweet->description, strlen("$name: "))),ENT_QUOTES,'UTF-8'));
		echo "<span style=\"display:none;\">"; 		
		echo date("d/m/Y H:s",strtotime($tweet->pubDate));
		echo "<a href=$link>$post</a>";
		echo "Posted: ".$diff;
		echo "</span>";
<script type="text/javascript">
function Timesince($original) {  
     // array of time period chunks  
     $chunks = array(  
     array(60 * 60 * 24 * 365 , 'year'),  
     array(60 * 60 * 24 * 30 , 'month'),  
     array(60 * 60 * 24 * 7, 'week'),  
     array(60 * 60 * 24 , 'day'),  
     array(60 * 60 , 'hour'),  
     array(60 , 'min'),  
     array(1 , 'sec'),  
     $today = time(); /* Current unix time  */  
     $since = $today - $original;  
     // $j saves performing the count function each time around the loop  
     for ($i = 0, $j = count($chunks); $i < $j; $i++) {  
     $seconds = $chunks[$i][0];  
     $name = $chunks[$i][1];  
     // finding the biggest chunk (if the chunk fits, break)  
     if (($count = floor($since / $seconds)) != 0) {  
     $print = ($count == 1) ? '1 '.$name : "$count {$name}s";  
     if ($i + 1 < $j) {  
     // now getting the second item  
     $seconds2 = $chunks[$i + 1][0];  
     $name2 = $chunks[$i + 1][1];  
     // add second item if its greater than 0  
     if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) {  
         $print .= ($count2 == 1) ? ', 1 '.$name2 : " $count2 {$name2}s";  
     return $print;  

Open in new window

Who is Participating?
Ray PaseurConnect With a Mentor Commented:
It can't be completely random, but it may not be very predictable.  Here is Andy Murray's "large" photo link

It looks like this much is consistent:

After that, the file names may be something that is an aritfact of the image upload - probably carried in the Twitter data base.
Ray PaseurCommented:
On my twitter account, these are the images of me.

When I use this link:
... I get an XML file that sends an error message.  See code snippet.

So it would appear that you need to extract the Twitter name as well as the subdirectory key from the /profile_images/ directory.

Sorry if that is not much help, but at least it helps establish a pattern,  Best, ~Ray
<Message>The specified key does not exist.</Message>


Open in new window

informabizAuthor Commented:
Hi Ray,

Is there any sets of rules for names like user_id.jpg or images are named randomly ?
Ray PaseurCommented:
Not sure what to do about this.  I believe our Asker is looking for information that Twitter may not want to make public, so there may be no good way to answer the Q.  Twitter has an API (and I would post a link here, but Twitter is down at the moment - a not uncommon situation).
Ray PaseurCommented:
Worth a look

I recently developed some automated Twitter interface code.  I am now in the process of revising and strengthening the error recover components!  ;-(
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.