以前、Twitterの検索APIで取得した名前(フルネーム)にリンクをつけて個人アカウントに飛ばす方法が分からない件という記事を書きました。
解決方法がどうしても分からないので、詳しい方にオフラインで相談をしてみました。すると、今まで考えていたこととは、全く別の方向から解決策を見つけることができました。
正規表現とpreg_replace関数では遷移できなかった
自分が考えていたのは、正規表現とpreg_replace関数を用いて、文字列があれば、個人アカウントに画面を遷移させるという考え方でした。
[php]
$tweet[‘user’][‘name’] = preg_replace("/(.*)/u", " <a href=\"https://twitter.com/\\1\" target=\"twitter\">\\1</a>", $tweet[‘user’][‘name’]);
[/php]
しかしこのコードでは、”このページは存在しません”というページに飛んでしまいます。
フルネームの部分をaタグを囲む
今回の相談で教えていただいた方法は、拍子抜けするほどシンプルな考え方です。難しい正規表現は必要ありません。
フルネームの部分をaタグで囲み、属性をhttps://twitter.com/の個人アカウントにするだけです。
[php]
<a href ="https://twitter.com/<?php echo $tweet[‘user’][‘screen_name’]; ?>" target="_blank"><?php echo $tweet[‘user’][‘name’]; ?></a>
[/php]
@スクリーンネームの部分をaタグで囲む
ちなみに@ではじまるスクリーンネームも、正規表現とpreg_replace関数を用いていました。
[php]
$tweet[‘user’][‘screen_name’] = preg_replace("/([A-Za-z0-9_]{1,15})/", " <a href=\"https://twitter.com/\\1\" target=\"twitter\">@\\1</a>", $tweet[‘user’][‘screen_name’]);
[/php]
こちらも、スクリーンネームの部分をaタグで囲み、属性をhttps://twitter.com/の個人アカウントにするだけです。
[php]
<a href ="https://twitter.com/<?php echo $tweet[‘user’][‘screen_name’]; ?>" target="_blank">@<?php echo $tweet[‘user’][‘screen_name’]; ?>[/php]