前回、Twitter RESTAPI1.1のGET search/tweetsからつぶやきを引っ張ってきたときに、以下の文字列について、どのようにリンクをつけるのかが、分かりませんでした。
- 「@~~~~」(スクリーンネーム)
- #ハッシュタグ
- https://t.co/○○○○○○○
今回は、そのリンクをつける方法が分かったので、そのコードを紹介しましょう。
preg_replace関数と正規表現
GET search/tweetsから引用したテキストの中にある、スクリーンネームやハッシュタグを正規表現にして、preg_replace関数を用いて、Twitterの検索画面に遷移させます。
#(ハッシュタグ)への自動リンク
[php]
$tweet[‘text’]=preg_replace("/\s#(w*[一-龠_ぁ-ん_ァ-ヴーa-zA-Za-zA-Z0-9]+|[a-zA-Z0-9_]+|[a-zA-Z0-9_]w*)/u", " <a href=\"https://twitter.com/search/%23\\1\" target=\"twitter\">#\\1</a>", $tweet[‘text’]);
[/php]
https://twitter.com/search/%23\\1\で、#(ハッシュタグ)を用いたTwitterの検索画面に移動します。
@(スクリーンネーム)への自動リンク
[php]
$tweet[‘text’]=preg_replace("/(@[A-Za-z0-9_]{1,15})/", " <a href=\"https://twitter.com/search/\\1\" target=\"twitter\">\\1</a>", $tweet[‘text’]);
[/php]
“https://twitter.com/search/\\1\のところは、”https://twitter.com/search/%40\\1\の方が良いような気がしますが、後者のアドレスだと、なぜか@@を
検索することになってしまいます。
URLのリンクはまだ分かりません
ここまで来ると「URLへのリンクは?」ということになりますが、そのコードは、この記事を書いた段階では分かりません。ただ惜しいところまで来ていますので、そのコードは以下の通りです。
[php]
$tweet[‘text’]=preg_replace("/(http:\/\/t.co\/[a-zA-Z0-9]{10})/", " <a href=\"<?php echo $tweet\[‘user’][‘url’]; ?>\\1\" target=\"twitter\">\\1</a>", $tweet[‘text’]);
[/php]
残念ながら、上記のコードでリンクをクリックしてみると、なぜか、
“http://○○○.com/%3C?php%20echo%20Array\[%27user%27][%27url%27];%20?%3Ehttp://t.co/ABCDE12345”
に遷移します。当然このアドレスでは、”404 Not Found”です。ただhttp://t.co/は表されているので、あとちょっとのところだと思います。
〔前の記事〕
【2014.10.22追記】
この記事で使った#に関するリンクに不十分な点があることが分かりました。関心のある方はこちらのページを参考にしてください。
〔参考サイト〕