dotvoid.comにてシンプルなUserAgent文字列のパーサーが紹介されています。UserAgentとは、Webページをみている端末の情報を表した文字列で、これを見ることで使用しているWebブラウザの種類やバージョン、携帯端末かどうか、検索エンジンのボットかどうかも調べることができます。
dotvoid.comにてシンプルなUserAgent文字列のパーサーが紹介されています。
UserAgentとは、Webページをみている端末の情報を表した文字列で、これを見ることで使用しているWebブラウザの種類やバージョン、携帯端末かどうか、検索エンジンのボットかどうかも調べることができます。
PHPでは $_SERVER['HTTP_USER_AGENT']; でUserAgentを取得することができますが、以下の例のように一つの文字列に全ての情報が詰め込まれているため、プログラムで利用するには使いづらい面もあります。
dotvoid.comの記事で紹介している関数は、このUserAgentの文字列を解析し、配列に分割してくれるものです。
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
たとえば、上記のUserAgentをこのparseUserAgent関数に渡すと以下のような結果を返してくれます。
Array ( [0] => Firefox [1] => 2.0.0.1 )
記事の作者自身、満足のいく出来ではないと言っているように、ほんとに単純な結果しか出力してくれません。
さらに詳しいUserAgentパーサーを作ってみたい方はこれを参考にしてみてはいかがでしょうか。
以下がそのソースコードです。
function parseUserAgent($ua) { $userAgent = array(); $agent = $ua; $products = array(); $pattern = "([^/[:space:]]*)" . "(/([^[:space:]]*))?" ."([[:space:]]*\[[a-zA-Z][a-zA-Z]\])?" . "[[:space:]]*" ."(\\((([^()]|(\\([^()]*\\)))*)\\))?" . "[[:space:]]*"; while( strlen($agent) > 0 ) { if ($l = ereg($pattern, $agent, $a)) { // product, version, comment array_push($products, array($a[1], // Product $a[3], // Version $a[6])); // Comment $agent = substr($agent, $l); } else { $agent = ""; } } // Directly catch these foreach($products as $product) { switch($product[0]) { case 'Firefox': case 'Netscape': case 'Safari': case 'Camino': case 'Mosaic': case 'Galeon': case 'Opera': $userAgent[0] = $product[0]; $userAgent[1] = $product[1]; break; } } if (count($userAgent) == 0) { // Mozilla compatible (MSIE, konqueror, etc) if ($products[0][0] == 'Mozilla' && !strncmp($products[0][2], 'compatible;', 11)) { $userAgent = array(); if ($cl = ereg("compatible; ([^ ]*)[ /]([^;]*).*", $products[0][2], $ca)) { $userAgent[0] = $ca[1]; $userAgent[1] = $ca[2]; } else { $userAgent[0] = $products[0][0]; $userAgent[1] = $products[0][1]; } } else { $userAgent = array(); $userAgent[0] = $products[0][0]; $userAgent[1] = $products[0][1]; } } return $userAgent; }
(PHPプロ!)
関連リンク
関連ニュース
転載元
PHPプロ!:最新のPHPニュース
この記事は参考になりましたか?
- この記事の著者
-
PHPプロ!(PHPプロ!)
「PHPプロ!」は、アシアル株式会社が運営するPHP開発者のためのポータル&コミュニティサイトです。同サイトでは、PHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座、PHP中級者のためのTIPSメーリングリスト、中・上級者向けの技術ノウハウ満載のPHPプロ!マガジンの提供など、PHP開発...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です