勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

ユーザーエージェントからブラウザ名、バージョン、OS名判別

      2014/07/03

/***判別側***/
//ブラウザ情報の取得
function browser_distinction($agent = '') {
if ($pos = strpos($agent, 'MSIE')) {
$browser_name = 'MSIE';
$browser_ver = substr($agent, $pos + 5, strpos($agent, ';', $pos) - $pos - 5);
} else if ($pos = strpos($agent, 'Firefox')) {
$browser_name = 'Firefox';
$browser_ver = substr($agent, $pos + 8, strlen($agent) - $pos - 8);
} else if ($pos = strpos($agent, 'Safari')) {
if ($pos = strpos($agent, 'Chrome')) {
$browser_name = 'Chrome';
$browser_ver = substr($agent, $pos + 7, strpos($agent, ' ', $pos) - $pos - 7);
} else {
$browser_name = 'Safari';
$pos = strpos($agent, 'Version');
$browser_ver = substr($agent, $pos + 8, strpos($agent, ' ', $pos) - $pos - 8);
}
} else if (ereg('Opera', $agent)) {
$browser_name = 'Opera';
$pos = strpos($agent, 'Version');
$browser_ver = substr($agent, $pos + 8, strlen($agent) - $pos - 8);
} else {
$browser_name = 'Unknown';
$browser_ver = 'Unknown';
}
return array($browser_name, $browser_ver);
}
//OS情報の取得
function os_distinction($agent = '') {
if (ereg('Windows NT 6.0', $agent)) {
$os_name = "Windows Vista";
} else if (ereg('Windows NT 5.1', $agent)) {
$os_name = "Windows XP";
} else if (ereg('Windows 98', $agent)) {
$os_name = "Windows 98";
} else if (ereg('Macintosh', $agent)) {
$os_name = "Macintosh";
} else if (ereg('Windows NT 6.1', $agent)) {
$os_name = "Windows 7";
} else if (ereg('Windows NT 6.1', $agent)) {
$os_name = "Windows 8";
}
return $os_name;
}

/***受け取り側***/

list($browser_name, $browser_ver) = browser_distinction($agent);

$os_name = os_distinction($agent)

 - PHP

  関連記事

Fatal error: [] operator not supported for stringsの対処

Fatal error: [] operator not supported f ...

ブログサービスの様にサブドメインを動的に生成する方法  

ブログサービスの様に「hoge」というログインIDを作成した際、「hoge.bl ...

CodeIgniterで共通の変数と定数を設定する

CodeIgniterで共通する配列が入った変数と、定数を設定したかった。以下に ...

MySQLでのバッククオート

phpmyadminを使っていると←みたいな括りを見るけど これなんなん? と思 ...

PHPでゼロパディング

予め桁数を決めておいて、桁数未満の場合は0で埋めたい場合の処理。 str_pad ...

Facebookのタイムラインを取得して表示する方法

Facebookのタイムラインを取得してきて、表示させたいという案件があった。 ...

日付の比較で○日前というのを調べる

PHP及びjavascriptで日付の比較をしたく、締切日とかではなく ○日前と ...

PHPのカレンダー関数

カレンダー関数で使えるかもしれないものをメモ。 ■cal_days_in_mon ...

UTF-16にエンコードされている文字列をUTF-8へデコード

エンコードされている文字列であまり見かけない感じのものがあった。UTF-8やSh ...

PHPでランダムな値を取得するケース諸々

テストデータを作成する際に、ランダムな値を入れたかったけど、 色々ケースがあった ...