files_get_contents给twitter带来错误

时间:2012-05-04 12:16:07

标签: php twitter

谢谢!

在php中,我想知道Twitter用户是否存在。 为此,我尝试恢复网址的内容:

$json = file_get_contents("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=".$_GET['search']);
$jsonObject = json_decode($json);

其中$ _GET ['search'] =是在URL中传递的用户的名称。

但问题是,如果有人提供不存在的用户名,我会收到错误。

在php.net上,他们说如果出现错误,file_get_contents会返回false。

我试图在一个条件下做:

if(file_get_contents("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=".$_GET['search']) != false){
    // do my stuff 
}
else{
    // say that this username don't exists
}

但是当我尝试这段代码时,我得到了一个大橙色警告代码,上面写着:

Warning: file_get_contents(http://api.twitter.com/1/statuses/user_timeline.json?screen_name=A_Wrong_User_Name) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP

所以我可以删除错误,只检查Twitter用户是否存在。 我存在,我想用file_get_contents获取页面内容,如果没有,我想显示用户不存在。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您应该使用CURL而不是file_get_contents

<?php
 $username = "user";

 $url="http://api.twitter.com/1/users/show/".$username.".xml";

 $ch = curl_init();
 curl_setopt ($ch, CURLOPT_URL, $url);
 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
 curl_setopt($ch, CURLOPT_NOBODY, 1);
 curl_setopt($ch, CURLOPT_HEADER, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

 curl_exec($ch);
 $header = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 curl_close($ch);

 if( $header == "404" )
 {
 //it does not exist
 }else{
 //it exists
 }