プログラミング雑記

【PHP】表示しているページのURLからフラグメント(ハッシュタグ)取り出す

goke

個人開発から世界を変えるようなプロダクトづくりを目指しています

はじめに

例えば

https://example.com#abcde

というページを表示している時に「#abcde」の部分を取得したいことがあります。
この「#abcde」の部分はフラグメントと呼ばれます。
フラグメントが取得できると何が嬉しいかというと、例えばフラグメントによってページを読み込んだ直後にスクロールさせつつ、<head>の<meta>要素もそれに合わせた内容に書き換えることもできます。

PHPに詳しい方なら$_SERVER[xxx]でなんとかできそうだな、とピンとくると思うのですが、あれこれ調べてみた結論としてはPHPでは実現することができません

じゃあ他の方法はというとJavaScriptでは下記のように簡単に実装できる。

const output = location.hash;               // '#abcde'

要するにフラグメントはクライアントサイドのための文字列であるということだと思います。

じゃあどうするのか

簡単な代替方法としてはフラグメントと合わせてクエリパラメータ(GETパラメータ)を使う方法です。
例えば

https://example.com?q=abcde

としてGETで受け取ってPHPで処理をする方法です。
いやいやそうじゃなくて、それをやった上でフラグメントも欲しいのだという場合は

https://example.com?q=abcde#abcde

とすれば良いです。

最後に

プログラマーな気になる言語年収ランキングをまとめました。
ぜひ合わせてご覧ください。

あわせて読みたい
  • この記事を書いた人

goke

個人開発から世界を変えるようなプロダクトづくりを目指しています

-プログラミング雑記