试图显示我的Twitter粉丝在我的网站上没有运气

时间:2010-10-12 10:09:58

标签: php twitter

这是我正在使用的代码,但在大多数情况下它确实返回空白。

<?php
$xml=file_get_contents('http://twitter.com/users/show.xml?screen_name=MyTwitterUsernameBla');
if (preg_match('/followers_count>(.*)</',$xml,$match)!=0) {
$count = $match[1];
}
echo $count;
?>

我希望以简单的方式显示Twitter粉丝的数量,没有插件......这是一个网站,而不是博客。

非常感谢:)

3 个答案:

答案 0 :(得分:2)

如果它适用于您的本地主机但不适用于您的公共主机,那么Twitter可能会阻止或限制您的公共服务器的IP。许多共享主机被阻止/限制,因为有多个站点在没有身份验证的情况下敲击Twitter API。 Twitter将它们视为一个应用程序并限制整个IP。

要解决这个问题,您需要使用oAuth进行身份验证。这是屁股的痛苦,但这是必要的一步。以下是您可能会发现的一些资源:

Twitter在Twitter Developer website的“您的应用”部分为您提供了一些凭据。将网站注册为应用后,请点击我的访问令牌。这将为您提供可用于成功进行身份验证的密钥/令牌。


另一个想法是Twitter只是限制你的应用程序。如果是这种情况,那是因为你有太多的流量而且你没有缓存API结果。例如,在获取新副本前一小时缓存API的结果。如果你这样做,推特会停止挑出你。

if(filemtime("cache.xml") < (int)$_SERVER["REQUEST_TIME"] - 3600) {
    $data = file_get_contents("http://twitter.com/users/show.xml?screen_name=username");
    file_put_contents("cache.xml", $data);
} else
    $data = file_get_contents("cache.xml");

答案 1 :(得分:1)

想想你的注册。进出口。太贪婪..相信它会匹配一切直到最后'&lt; /'

尝试类似非贪婪的比赛:

/followers_count>(.*?)</

或匹配除“&lt;”之外的所有内容:

/followers_count>([^<]*)</

解析XML可能会更容易,如果你想从xml中提取很多,那就更“正确”了。但在你的情况下看起来有点矫枉过正。

答案 2 :(得分:0)

使用XML解析器比尝试使用正则表达式获取位要好得多(更可靠,更易于维护)。

简单地:

$xml = new SimpleXMLElement('http://twitter.com/users/show.xml?screen_name=username', null, true);

echo $xml->followers_count;