やったこと

webサービスを作るときに考えたことを垂れ流します

【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)){  

以上です・・。