1. TOPTOP
  2. Webサービス
  3. Twitter

Twitter RESTAPIから返されるJSONデータの基本的な読み方と書き出し方(その2)

|

Twitter_logo_blue

前回(新しいタブで開く)、Twitter RESTAPIから返される、JSONデータの基本的な読み方について説明をしました。今回は返されたデータのいくつかを、実際に書き出していきたいと思います。

その前提として、予め以下のコードを用意します。json_decode関数を使用し、jsonデータを連想配列($results)として取得し、各配列($tweet)をforeach文で繰り返し出力します

<?php
require_once("twitteroauth/twitteroauth.php");

$consumerKey = "";
$consumerSecret = "";
$accessToken = "";
$accessTokenSecret = "";

$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);

$request = $twObj->OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET',
    array(
        'count'=>'200',
        'screen_name' => 'MYSCREEN_NAME',
        ));
$results = json_decode($request);
?>

<?php
if(isset($results) && empty($results->errors)){
    foreach($results as $tweet){
?>

GET statuses/user_timelineからの書き出し

参考にしているのは、GET statuses/user_timeline(新しいタブで開く)です。

ツィート本文

<?php echo $tweet->text; ?>

スクリーンネーム(@ではじまる半角英数字15文字の文字列)

<?php echo $tweet->user->screen_name; ?>

ユーザーネーム

<?php echo $tweet->user->name; ?>

アイコン

<?php echo $tweet->user->profile_image_url; ?>

時間

<?php echo date('Y-m-d H:i:s', strtotime($tweet->created_at)) ; ?>

ハッシュタグ

<?php foreach($tweet->entities->hashtags as $hashtag) { ?>
  <?php echo ($hashtag->text); ?>
<?php } ?>

user_timelineのドキュメンテーションを読むと、hashtagsの中には何も入っていません。サンプルはつぶやきの中には、ハッシュタグを含んだ文字列はないことを想定していると思われます。

もし、つぶやきの中にハッシュタグを取り出したい場合は、”$tweet->entities->hashtags”を配列、”$hashtag”を要素の値として取り出していきます。

ただし、”$hashtag”のままでは、型が分からないので”text”を指定します。

Entities in Objectsからの書き出し

参考にしているのは、Entities in Objects(新しいタブで開く)です。

単数の画像

<?php echo $tweet->entities->media[0]->media_url; ?>

単数の画像なので、配列の要素は1つしかありませんが、[0]を指定します。

Uploading Media: Multiple Photosからの書き出し

参考にしているのはUploading Media: Multiple Photos(新しいタブで開く)です。

複数の画像

<?php if (is_array($tweet->extended_entities->media)) { ?>
    <?php foreach($tweet->extended_entities->media as $key => $media) { ?>
        <?php if (isset($tweet->extended_entities->media[$key])) { ?>
           <img src="<?php echo $tweet->extended_entities->media[$key]->media_url; ?></br>
         <?php }  ?>
     <?php } ?>
<?php } ?>

複数の画像のときは、配列の中身は複数あります。値変数($media)をキー変数($key)に入れて、”media_url”を複数取り出せるようにする必要があります。

そのため、繰り返し構文のforeach文でくくります。詳しくはこちら(新しいタブで開く)を参考にしてください。

2015年1月20日追記

この記事を見直していると、Uploading Media: Multiple Photosのリンクが切れています。リンクをクリックすると、”Access denied”と表示されますが、あえてリンク切れを解除しないでおきます。

〔参考サイト〕