How to Create a Twitter Feed on Your Web Site

本文介绍了一种使用PHP从Twitter抓取用户最新推文的方法,并通过解析JSON文件来显示这些推文。该方法考虑了网站流量高峰时可能出现的问题,并实现了缓存机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Twitter has quickly become one of the most popular social networking sites online. It is currently ranked among the top twenty Web sites in the world and has over a million users. I have only recently hopped on the bandwagon and so far I have been able to connect with many interesting people and discover tons of great online resources. I added a Twitter feed into my footer once I got things going and I have been refining the code ever since. I finally have it at a point where I think all of the bugs are ironed out and it is ready to share.

The Twitter API is pretty easy to use and I decided to work with the Search API Method. I found that sometimes Twitter doesn’t respond due to high traffic on the site so instead of just using the API to return an Atom Feed, I decided to use is to return a Json file.

First, let’s setup our username and the number of Tweets we want to display.

1
2
3
4
$username = "your-user-name";
$num = 5;
 
$feed = "http://search.twitter.com/search.json?q=from:" . $username . "&rpp=" . $num;

Next we need to copy the Json file to our server, just in case the Search API doesn’t respond during our next attempt to grap our Tweets.

5
6
7
8
9
10
11
12
13
14
15
16
17
18
$newfile = dirname(__FILE__)."/twitternew.json";
$file = dirname(__FILE__)."/twitter.json";
 
copy($feed, $newfile);
 
$oldcontent = @file_get_contents($file);
$newcontent = @file_get_contents($newfile);
 
if($oldcontent != $newcontent) {
copy($newfile, $file);
}
$tweets = @file_get_contents($file);
 
$tweets = json_decode($tweets);

This will also check to see if any new Tweets have been added before it attempts to copy over the new Json file.

To finish it all off, we need to display our Tweets. This examples outputs them into an unordered list.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
echo "<ul>";
for($x=0;$x<$limit;$x++) {
$str = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $tweets->results[$x]->text);
$pattern = '/[#|@][^\s]*/';
preg_match_all($pattern, $str, $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\">$keyword</a>";
} else {
$link = urlencode($link);
$search = "<a href=\"http://twitter.com/#search?q=$link\" class=\"grey\">$keyword</a>";
}
$str = str_replace($keyword, $search, $str);
}
 
echo "<li>".$str."</li>\n";
}
echo "</ul>";

Let’s put it all together and wrap it in a PHP tag.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
$username = "your-user-name";
$num = 5;
 
$feed = "http://search.twitter.com/search.json?q=from:" . $username . "&amp;rpp=" . $num;
 
$newfile = dirname(__FILE__)."/twitternew.json";
$file = dirname(__FILE__)."/twitter.json";
 
copy($feed, $newfile);
 
$oldcontent = @file_get_contents($file);
$newcontent = @file_get_contents($newfile);
 
if($oldcontent != $newcontent) {
copy($newfile, $file);
}
$tweets = @file_get_contents($file);
 
$tweets = json_decode($tweets);
 
echo "<ul>";
for($x=0;$x<$limit;$x++) {
$str = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $tweets->results[$x]->text);
$pattern = '/[#|@][^\s]*/';
preg_match_all($pattern, $str, $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\">$keyword</a>";
} else {
$link = urlencode($link);
$search = "<a href=\"http://twitter.com/#search?q=$link\" class=\"grey\">$keyword</a>";
}
$str = str_replace($keyword, $search, $str);
}
 
echo "<li>".$str."</li>\n";
}
echo "</ul>";
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值