正規表現でUser Agent分岐 PC版
User AgentをPHPで分岐しブラウザ(Chrome/Firefox/Internet Explorer/Edge/Safari/Opera)判別
Opera
Chrome、Safariより先に分岐。Opera15以降はOPR。
Windows 8.1 Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1284.49
Vivaldi
Chrome、Safariより先に分岐。
Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.148 Safari/537.36 Vivaldi/1.4.589.38
Edge
Chromeより先に分岐。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
Chrome
Safariより先に分岐。iOSはCriOS。
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11
Internet Explorer
IE11はMSIEが含まれていない。
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
PHP
/**
*
* 正規表現でUserAgent分岐
*
* @param string $user_agent
* @return array
*/
function getBrowser($user_agent = '')
{
if (empty($user_agent)) {
// ユーザエージェント
$user_agent = $_SERVER['HTTP_USER_AGENT'];
}
// マイナー
if (preg_match('/(Iron|Sleipnir|Maxthon|Lunascape|SeaMonkey|Camino|PaleMoon|Waterfox|Cyberfox)\/([0-9\.]+)/', $user_agent, $matches)) {
$browser = $matches[1];
$version = $matches[2];
// 主要
} elseif (preg_match('/(^Opera|OPR).*\/([0-9\.]+)/', $user_agent, $matches)) {
$browser = 'Opera';
$version = $matches[2];
} elseif (preg_match('/Vivaldi\/([0-9\.]+)/', $user_agent, $matches)) {
$browser = 'Vivaldi';
$version = $matches[1];
} elseif (preg_match('/Edge\/([0-9\.]+)/', $user_agent, $matches)) {
$browser = 'Edge';
$version = $matches[1];
} elseif (preg_match('/(Chrome|CriOS)\/([0-9\.]+)/', $user_agent, $matches)) {
$browser = 'Chrome';
$version = $matches[1];
} elseif (preg_match('/Firefox\/([0-9\.]+)/', $user_agent, $matches)) {
$browser = 'Firefox';
$version = $matches[1];
} elseif (preg_match('/(MSIE\s|Trident.*rv:)([0-9\.]+)/', $user_agent, $matches)) {
$browser = 'Internet Explorer';
$version = $matches[2];
} elseif (preg_match('/\/([0-9\.]+)(\sMobile\/[A-Z0-9]{6})?\sSafari/', $user_agent, $matches)) {
$browser = 'Safari';
$version = $matches[1];
// ゲーム機
} elseif (preg_match('/Nintendo (3DS|WiiU)/', $user_agent, $matches)) {
$browser = 'Nintendo';
$version = $matches[1];
} elseif (preg_match('/PLAYSTATION (3|Vita)/', $user_agent, $matches)) {
$browser = 'PLAYSTATION';
$version = $matches[1];
// BOT
} elseif (preg_match('/(Googlebot|bingbot)\/([0-9\.]+)/', $user_agent, $matches)) {
$browser = $matches[1];
$version = $matches[2];
} else {
$browser = 'unidentified';
$version = 'unidentified';
}
return array($browser, $version);
}
主要ブラウザ以外に当サイトのアクセスログに含まれていたブラウザを分岐に追加。
Chrome、Safariより先に分岐。
SRWare Iron(エスアールウェア アイアン)
Iron 33.0.1800.0 Iron 33.0.1800.0 Windows 8 Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Iron/33.0.1800.0 Chrome/33.0.1800.0 Safari/537.36
Sleipnir(スレイプニル)
Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 Sleipnir/4.3.4
Maxthon(マクストン)
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Maxthon/4.1.3.5000 Chrome/26.0.1410.43 Safari/537.1
Firefoxより先に分岐。
Lunascape(ルナスケープ)
Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.28) Gecko/20120410 Firefox/3.6.28 Lunascape/6.8.8.26908
SeaMonkey(シーモンキー)
Mozilla/5.0 (X11; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0 SeaMonkey/2.15.2
Camino(カミーノ) - 終了
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; ja; rv:1.9.2.28) Gecko/20120308 Camino/2.1.2 (MultiLang) (like Firefox/3.6.28)
PaleMoon(ペイルムーン)
Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20140305 Firefox/24.0 PaleMoon/24.4.0
Waterfox(ウォーターフォックス)
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:27.0) Gecko/20100101 Firefox/27.0.2 Waterfox/27.0
Cyberfox(サイバーフォックス)
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/39237369 Firefox/28.0 Cyberfox/28.0
UserAgent一覧はphp.o0o0.jp-UserAgent を参照。