サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2013/07/08

PHP-ブラウザのバージョンを調べる

あるWebアプリにPHPで書いた部品を組み込めるということなので、ブラウザのバージョンを取得するプログラムをPHPで書くことになりました。このWebアプリに付随するアプリが、IE9以前とFirefox、Safariにのみ対応しているため、それ以外のブラウザを使うユーザに非対応であることを知らせるためです。

こちらにブラウザを判別するPHPプログラムがありました。ただ現在のPHPではereg関数は非推奨なので、preg_matchを使うことに。

<?php
header("Content-type: text/html;charset=utf-8");
$agent = getenv( "HTTP_USER_AGENT" );
$supported = FALSE;
$msg = "";
$patterns = array('/MSIE [0-9]+\.[0-9]+/',
'/Firefox\/[0-9]+\.[0-9]+/',
'/OPR\/[0-9]+\.[0-9]+/',
'/Chrome\/[0-9]+\.[0-9]+/',
'/[0-9]+\.[0-9]+\.[0-9]+ Safari/');
for($i=0, $len=count($patterns); $i<$len; $i++) {
if (preg_match($patterns[$i], $agent, $matches, PREG_OFFSET_CAPTURE, 0)) {
$msg = "お使いのブラウザは「" . $matches[0][0] . "」です。";
if (($i == 0) && (preg_match('/MSIE 10/', $matches[0][0])) !== 1) {
$supported = TRUE;
}
if ($i == 1) $supported = TRUE;
if ($i == 4) $supported = TRUE;
// Chromeの場合、文字列"Chrome"と"Safari"が含まれるため、
// "Chrome"を先にチェックして、breakする必要がある。
// Operaの場合、文字列"Chrome"と"Safari"が含まれるため、
// "OPR"を先にチェックして、breakする必要がある。
// また、上記5種類以外のブラウザも非対応
break;
}
}
if (!$supported) {
$msg .= 'このアプリには対応していません。';
}
echo $msg;
?>

コード内にコメントで書いているように、Chromeの場合は、getenv( "HTTP_USER_AGENT" )で返される文字列に"Chrome","Safari"の両方があるため、ちょっと変わった処理をしています。

このプログラムの問題点は、IE,Firefox,Chrome,Safari以外のブラウザを使った場合。「お使いのブラウザは~」のメッセージが表示されません。ただ社内でこれ以外のブラウザが使われることはほとんどないので、一応よしとしておきます。

P.S. Operaにも対応するよう、またSafariの対応が誤っていたため、上記コードを一部変更しました(2013/07/22)。

スポンサーサイト

コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1615-fca83f01

■  カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。