Twitter 検索APIのGET search/tweetsから名前(フルネーム)を引っ張ってリンクをつけ、個人のページに飛ばす方法が分からず悩んでおります。
先日、その件に関する記事を書いた後、丸一日考えてみましたが、いい書き方が思い浮かびません。
“このページは存在しません”
悩んでいるところを具体的に挙げると、preg_replace関数の記述のうち、第2引数の書き方です。
[php]
$tweet[‘user’][‘name’] = preg_replace("/(.*)/u", " <a href=\"https://twitter.com/\\1\" target=\"twitter\">\\1</a>", $tweet[‘user’][‘name’]);
[/php]
しかしこのコードでは、”このページは存在しません”というページに飛んでしまいます。
自分が書いたコードでは”https://twitter.com/名前”に飛んでしまいますが、最終的には、”https://twitter.com/スクリーンネーム“に飛ばしたいと考えています。
preg_replace関数の引数について
PHPのドキュメンテーションで、preg_replace関数の引数について調べて見ると、こうなっています。
- 第1引数 → 検索を行う文字列もしくは配列のパターン
- 第2引数 → 置換を行う文字列もしくは文字列の配列
- 第3引数 → 検索・置換対象となる文字列もしくは文字列の配列
GET search/tweetsの中にある名前(フルネーム)を第3引数で特定、第1引数でパターンの確認、第2引数でURLに置換するという流れです。
従って、”このページは存在しません”というページに飛んでしまうのは、第2引数の値に原因があると考えられます。
“https://twitter.com/(バックスラッシュ)1″とは?
また上記のコードでは、aタグの中に、”\1“という文字列が2か所出てきます。
1か所目のhref属性を見ると、”https://twitter.com/\1″に飛べという意図なのでしょう。ただ、”\1(バックスラッシュいち)”の意味するところが分かりません。
GitHub上にコードを公開
とりあえず、今回の問題に関するコードをGitHub上にUPして公開しておきます。
GitHub echizenyayota/searchapi
https://github.com/echizenyayota/searchapi
ZIPをフォルダをダウンロードして、サーバーにUPするとこんな感じの画面が出ます。検索するキーワードは、”中央線”にしています。
今回の問題に関する、コードは48行目にあります。
〔参考サイト〕