05. 8月 2015 · Write a comment · Categories: PHP · Tags:

PHP$_SERVER 変数でリクエストのページ内リンク (アンカータグ) を取得しようとして散々悩んでいました。
結論から言うと取得出来ません。

parse_url()を使用する例をネットで見かけますが、それはまた別な話です。
アクセス先情報は $_SERVER 変数を使用すれば取得できます。

$url = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
こんな感じですね。



この $_SERVER[‘REQUEST_URI’] にはページ内リンク部は含まれません。
ページ内リンクは、ブラウザに取って必要な情報でサーバ側には必要ない情報ですから。

先述した、parse_url()を使用できるのは下記のような時です。



$url = 'http://www.hoge.jp/hogehoge#anc';
var_dump(parse_url($url));
まあね、実際こんなことしないですよね。
何の意味があるのか分からないですよこんなの。

どうしても、実行中 URL からアンカー部を抽出したい場合は、レンダリング後に Javascript でやるしか無いですね。
割りと必要な機能だと思うので、PHP が取り込んでくれたらいいなと思ってます。
……ないかな。

それでは。