REQUEST_URIを分解する
phpだと$_SERVER['REQUEST_URI']でリクエストされたURIを取得できる。このREQUEST_URIは相対パスが入るかと思っていたけど、絶対パス(http://~)が入る場合もあるらしい。
で、phpでURLを分解する関数にparse_urlが用意されているけど、この関数は原則絶対パスを渡さないといけないらしく、相対パスだと動作保証されないらしい。しかし動作確認してみた限り、相対パスでも特に問題はなさそうな感じ。
<?php // /sample/index.html?a=b $url = parse_url($_SERVER['REQUEST_URI']); pr($url);
結果
Array ( [path] => /sample/index.html [query] => a=b )
queryのある場合は、urlencodeを忘れないこと。
PHP の $_SERVER['REQUEST_URI'] と parse_url() の予想外な動作について。 - こせきの技術日記