【PHP】Safariアクセス時にURLをゲットすると日本語エンコード部分が大文字になっている!
先ほどちょっといやな現象に悩まされてしまいました・・。
iPhoneの「Safari」でPHPサーバにアクセスをして、サーバ側で「$_SERVER」を参照して、ページのURLを取得したんです。
コードは以下のような感じ。
$current_url = (is_ssl() ? 'https' : 'http') . '://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
このURLですが、URLに日本語が含まれている場合、エンコード部分のアルファベットが「大文字」になっていることがあるみたいです。
(例えば「%e3%81%82」が「%E3%81%82」みたいになっているんです)
PCのChromeでアクセスしたときは「小文字」だったんですが、safariだとこういう動作をしてしまうんですね。
文字列比較によってURLを判定しようとしたんですが、比較に失敗してちょっと困ってしまいました。
日本語が含まれたURLを比較する場合は、大文字・小文字の違いを無視してくれる「strcasecmp」という関数を使うといいですね…。
//↓これはダメ! // if ($url == $current_url){ //↓こっちがイイ! if (!strcasecmp($url, $current_url)){
以上です・・。