doudonn WEB制作やサーバーの話とかいろいろ

【Twitter API V2・PHP】ハッシュタグ・メンションをリンクに変換(置換)する方法

doudonn 更新日:
【Twitter API V2・PHP】ハッシュタグ・メンションをリンクに変換(置換)する方法

ハッシュタグ・メンションをリンクに変換

TwitterAPIで地味に難しかったところです。
ググれば解説サイトがたくさん見つかりますが、
完璧なものが見つからなかったので自分で何とかした。

※参考にしながらいろいろ合体した

1、ハッシュタグ変換

$text = preg_replace("/(?<![0-9a-zA-Z'\"#@=:;\/])[##]([\w\x{05be}\x{05f3}\x{05f4}]*[\p{L}_\x{30FB}]+[\w\x{05be}\x{05f3}\x{05f4}]*)/u","<span class=\"hashtag\"><a href=\"https://twitter.com/hashtag/\\1\" target=\"_blank\" rel=\"nofollow noopener\">#\\1</a></span>", $text);

これで2022年12月現在は100%対応できているはず。

Twitterはいつからか大文字の「#」や「・」も対応したので、
ググって見つかる解説は未対応なことが多かった。
ということもあり、日々改善する必要があるものでもあります。

2、メンション変換

$text = preg_replace("/(?<![0-9a-zA-Z'\"#@=:;\/])@([0-9a-zA-Z_]{1,15})/u","<span class=\"mentions\"><a href=\"https://twitter.com/\\1\" target=\"_blank\" rel=\"nofollow noopener\">@\\1</a></span><br />", $text);

メンションは特に難しくない。

ググって見つかるサンプルは「URLにある@」に対応していないことがあるので注意。
YouTubeやTikTokは@を含んでいるのでおかしくなってしまう。
これもまた新たなパターンが生まれるかもしれないので要注意ではある

サンプルはこちら

ついったらトレンド」を見てみてください。

ちゃんとハッシュタグ・メンションが変換できているはずです。
またTwitterが新仕様にすればダメになるので、
自分が作ったサイトは日々見ることが何よりも大事。

--

TwitterAPIの関連記事

記事一覧はこちら:TwitterAPI

管理人について
doudonn
名前:doudonn(どうどん)
ひたすらWEB制作な人。
一応社長です。音ゲー好き

<Twitterはこちら>
ゲーム垢
WEB制作垢
お知らせ

2022年11月30日に全記事削除しました。
まだ再開に向け作りかけ。


無駄にページ表示速度にこだわってます。

役立ちサイト
wiki
© 2022-2023 doudonn All Rights Reserved.