サポート » 使い方全般 » ツイッターのRSSをサイトに表示する

  • 解決済 mutty

    (@mutty)


    複数のツイートを下記のコードで取得して表示させています。

    <?
    $username = 'ID';
    $url = "http://twitter.com/statuses/user_timeline.xml?id=" . $username . "&count=5";
    $rss = simplexml_load_file($url);
    ?>
    <dl>
    <?
    foreach ($rss->status as $i) {
        $val = $i->text;
        $val = ereg_replace("(http)(://[[:alnum:]\S\$\+\?\.-=_%,:@!#~*/&]+)","<br /><a href=\"\\1\\2\">\\1\\2</a>",$val);
        echo "<dt>";
        echo date( "Y/m/d", strtotime( $i->created_at ) );
        echo "</dt>";
        echo "<dd>". $val. "</dd>";
    }
    ?>
    </dl>

    ここで質問なのですが、

    1、返信やリツイートを表示させたくないので@を含むtextは除外したい。

    2、リンクを<a href="url" onclick="window.open('url'); return false;">text</a>などのようなコードで新しいタブで表示させたい。

    わかる方いましたらお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 1、返信やリツイートを表示させたくないので@を含むtextは除外したい。

    ツイート中のユーザー名を削除、ってことなら以下で OK。

    <?php
    $pats = array(
      "/(http)(:\/\/[0-9a-z\S\$\+\?\.-=_%,:@!#~*\/&]+)/i",
      '/@[0-9a-z_]+:?/i'
    );
    $reps = array(
      "<br /><a href=\"\\1\\2\" onclick=\"window.open('\\1\\2'); return false;\">\\1\\2</a>",
      ''
    );
    $username = 'ID';
    $url = "http://twitter.com/statuses/user_timeline.xml?id=" . $username . "&count=5";
    $rss = simplexml_load_file($url);
    ?>
    <dl>
    <?php
    foreach ($rss->status as $i) {
        $val = $i->text;
        $val = preg_replace( $pats, $reps, $val );
        echo "<dt>";
        echo date( "Y/m/d", strtotime( $i->created_at ) );
        echo "</dt>";
        echo "<dd>". $val. "</dd>";
    }
    ?>
    </dl>

    <? の代わりに <?php を使うようにすると幸せな日々を過ごせます。

    kzさん、早速のアドバイスありがとうございます。

    「2」は新しいタブで開けるようになりました。ありがとうございます。

    「1」に関しては、@を含むつぶやきをリストから除外したいという意味で、純粋に自分のつぶやきのみ5件表示させたいという意味でした。まぎらわしかったらスイマセン。

    スーパーえびちゃん人のkzさんならわかりますでしょうか?

    よろしくお願いします。

    foreach を以下に変更すれば OK。ツイート中のどこかに @ があると除外します。

    $count = 0;
    foreach ($rss->status as $i) {
        $val = $i->text;
        if ( false !== strpos( $val, '@' ) ) continue;
        if ( ++$count > 5 ) break;
        $val = preg_replace( $pats, $reps, $val );
        echo "<dt>";
        echo date( "Y/m/d", strtotime( $i->created_at ) );
        echo "</dt>";
        echo "<dd>". $val . "</dd>";
    }

    ※@を含むツイートがあると表示件数が減るので、予め 5 件以上取得しておきます。
    10件取得しておく場合:
    $url = "http://twitter.com/statuses/user_timeline.xml?id=" . $username . "&count=10";

    スーパーえびちゃん人より

    kzさんありがとうございます。解決いたしました。

    スーパーえびちゃん人さんのおかげで幸せになりました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「ツイッターのRSSをサイトに表示する」には新たに返信することはできません。