正規表現で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 を参照。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について