Php 如何从Twitter API数据中检索图像
我正在建立一个页面,可以根据选定的主题拉推特——目前这是硬编码的,似乎工作正常。问题是,在处理JSON数据(现在已转换为数组)时,我正努力将检索图像所需的数组中的“media_url”键作为目标 除了重新编写代码或重新格式化代码外,我尝试了多种方法来定位帖子的媒体url键,但都无济于事。在其他答案中,我看到人们成功地将数据作为一个对象来使用,但我不知道如何做到这一点 我已经按照上的教程走到了这一步-我会注意到,人们曾询问如何检索此页面上的图像,但没有得到回复,很遗憾Php 如何从Twitter API数据中检索图像,php,arrays,json,twitter,Php,Arrays,Json,Twitter,我正在建立一个页面,可以根据选定的主题拉推特——目前这是硬编码的,似乎工作正常。问题是,在处理JSON数据(现在已转换为数组)时,我正努力将检索图像所需的数组中的“media_url”键作为目标 除了重新编写代码或重新格式化代码外,我尝试了多种方法来定位帖子的媒体url键,但都无济于事。在其他答案中,我看到人们成功地将数据作为一个对象来使用,但我不知道如何做到这一点 我已经按照上的教程走到了这一步-我会注意到,人们曾询问如何检索此页面上的图像,但没有得到回复,很遗憾 require_once('
require_once('TwitterAPIExchange.php');
/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
'oauth_access_token' => "xxx",
'oauth_access_token_secret' => "xxx",
'consumer_key' => "xxx",
'consumer_secret' => "xxx"
);
$url = "https://api.twitter.com/1.1/search/tweets.json";
$getfield = '?q=%23life&count=20&tweet_mode=extended&include_entities=true';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$string = json_decode($twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(),$assoc = TRUE);
if(array_key_exists("errors", $string)) {echo "<h3>Sorry, there was a problem.</h3><p>Twitter returned the following error message:</p><p><em>".$string[errors][0]["message"]."</em></p>";exit();}
foreach($string as $items)
{
if (is_array($items)){
foreach($items as $item)
{
if ($item['user'] != null) {
echo $item['user']['name'] . " " . "|" . " " . "@" . $item['user']['screen_name']."<br />";
echo $item['full_text'] . "<br />";
echo $item['created_at']."<br />";
echo $item['entities']>['media'][0]['media_url'] . "<br />";
echo '<hr>';
var_dump($item);
}
else {
return;
}
}
}
}
?>
require_once('TwitterAPIExchange.php');
/**在此处设置访问令牌-请参阅:https://dev.twitter.com/apps/ **/
$settings=数组(
“oauth\u访问\u令牌”=>“xxx”,
“oauth\u访问\u令牌\u秘密”=>“xxx”,
“消费者密钥”=>“xxx”,
“消费者机密”=>“xxx”
);
$url=”https://api.twitter.com/1.1/search/tweets.json";
$getfield='?q=%23life&count=20&tweet_mode=extended&include_entities=true';
$requestMethod='GET';
$twitter=newtwitterapiexchange($settings);
$string=json\u解码($twitter->setGetfield($getfield)
->buildOauth($url,$requestMethod)
->performRequest(),$assoc=TRUE);
如果(array_key_存在(“errors”,$string)){echo“很抱歉,出现了问题。Twitter返回了以下错误消息:“$string[errors][0][“message”]。”“exit();}
foreach($string作为$items)
{
if(is_数组($items)){
foreach($items作为$item)
{
如果($item['user']!=null){
echo$item['user']['name'].“|”.@.$item['user']['screen\u name'.”
;
echo$item['full_text']。“
”;
echo$item['created_at']。“
”;
echo$item['entities']>['media'][0]['media_url']。“
”;
回声“
”;
var_dump(项目);
}
否则{
返回;
}
}
}
}
?>
我在尝试重新格式化行
echo$item['entities']>['media'][0]['media\u url']时遇到许多错误。“
”代码>并且已经到达了在这里接触的点。希望我不必将其重新格式化为对象,但它看起来像是我可以的。根据@MagnusEriksson的评论,我的问题是由我使用的语法不正确引起的
$item['entities']['media'][0]['media\u url']
允许我定位我正在寻找的索引,现在我可以为tweet显示图像:)谢谢Magnus $item['entities']>['media']
中的
是怎么回事?尝试删除它。@MagnusEriksson OMG有效lol谢谢编辑:事实上这确实有效,但我仍然收到错误“未定义索引:媒体”。如果您有>
,它将评估$item['entities']
是否大于['media'][0]['media\u url']”
。如果您想获取值,它应该是:$item['entities']['media'][0]['media'][url']
如果这是数组的正确结构。奇怪的是,它工作时仍然返回一个错误?删除['media']也会停止它的工作。代码echo$item['entities']>['media'][0]['media'[url']。“
“
可能只是抛出一个未定义的索引并回显值1
。这行代码不会为您提供$item['entities']['media'][0]['media\u url']
。