超ひさしぶりの更新です。
最近、海外ユーザーにも訴求したサービスを立ち上げました。
初音ミクの動画を紹介しております。
http://miku-music.com/
日本語タイトルと英語タイトルを二つDBに保持しているので、曲リスト一覧で、
海外ユーザーには英語タイトルで表示しています。
今回は海外ユーザーかどうかを判別するプログラムを紹介します。
====キーワード ====
・HTTP_HEADER
・ACCEPT_LANGUAGE
・strpos
ブラウザから送られてくるHTTP_HEADERの値にACCEPT_LANGUAGEという値が入っています。
中身は、「ja.en」といった具合に、言語の優先度が記述されています。海外であれば、おそらく「en,ja」といった優先度になるかと思います。
この値を使って海外ユーザーかどうかを判定します。
strposという文字列検索関数を使うと、検索ヒットしたindex番号(0からはじまります)が返却され、ヒットしなければfalseが返却されます。
まとめると下記のようなプログラムになりました。
private function _isEnglish(){if(empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) return true;$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];$ja = strpos($lang,'ja');$en = strpos($lang,'en');if($ja === false || $en === false) return true;if($en < $ja){return true;}else{return false;}}
注意したいところとして、strposは0が返却されるかもしれないし、falseかもしれないので、if($var)といったおなじみの使い方はNGとなります。===でfalseかどうかを判定してあげましょう。
上記プログラムでは、ACCEPT_LANGUAGEが設定されていなかったり、jaでもenでもないというイレギュラーの場合はすべて海外ユーザーとして判定(true)しています。
以上。