確か、表示ルールが厳格化されたのは、TwitterAPI1.1に移行してからなので、いまさらの話ではあるのだけれど…。
Twitterのツイートを利用する場合…。
たとえば、ツイート本文(text)において…。
- @スクリーンネーム が含まれている場合は対象のアカウントへリンク
- #ハッシュタグ が含まれてる場合は対象のハッシュタグの検索ページへリンク
- URL が含まれている場合は、textに含まれる短縮済みのURLを元のURLに展開した上でディスプレイURLとしてリンクする
みたいなルールがあったりする。(他にもたくさんあるけれど、今回は本文の話のみ。)
1と2に関しては正規表現でどうにでもなるとはいえ…。(実際そのように対応している方もいらっしゃる模様)
問題は3つ目。「え…?わざわざリクエストを試みて元URLを取得した上で置換しないとダメなの…うざっ!」とか最初は思ってたのだけれど…。
ドキュメントをよく見てみると、ツイート取得系のAPIリクエスト時にinclude_entitiesをtrueにしてやる事で…。
以下のようにテキストに含まれるハッシュタグ・メンション(スクリーンネーム)・URL等についての情報が返ってくる。
["entities"]=> array(4) { ["hashtags"]=> array(0) { } ["symbols"]=> array(0) { } ["user_mentions"]=> array(0) { } ["urls"]=> array(1) { [0]=> array(4) { ["url"]=> string(22) "http://t.co/rOptxPlCAj" ["expanded_url"]=> string(31) "https://otapps.net/archives/3662" ["display_url"]=> string(24) "otapps.net/archives/3662" ["indices"]=> array(2) { [0]=> int(47) [1]=> int(69) } } } }
なので、スクリーンネームやらハッシュタグは勿論、URLに関してもこれらのデータを用いる事で、単純な「置換」でどうにでもなる感じ。
何か色々みてると正規表現駆使して頑張ってる方もいらっしゃるようなので、一応、Tipsとして記事にしてみました。(ここ数日、どんなに下らない事でもブログ更新しよう!みたいなノリなので。)