• ベストアンサー

ブラウザ種を判別する正規表現(PHP)

PHPでクライアントのブラウザ種類[IE/NN]を判別する正規表現はどのように書いたらいいのでしょうか? [HTTP_USER_AGENT]とブラウザメーカーとの対比辞書のようなものはありますか? eregi ("MSIE", $HTTP_USER_AGENT) ではきれいに拾えないのです。 よろしくお願いします。

  • basil
  • お礼率31% (40/127)
  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
noname#9414
noname#9414
回答No.1

一応User-Agentのリストですが、 これでブラウザを判定できるわけでは ないらしいですよ。 #勝手にいじれるからです。 ではでは☆

参考URL:
http://www.dais.is.tohoku.ac.jp/logs/agentgripes.html

関連するQ&A

  • ユーザーエージェント IE6のブラウザ判別について

    調べているんですが、解決に至らず… 教えていただけると助かります! phpで、ブラウザ判別(ユーザーエージェント)を行い、IE6の場合のみ別ページへジャンプさせています。 全てというわけではないのですが、IE7でもIE6と認識される場合があり、困っています。 スクリプトは以下のとおりです。 <?php $user_agent = $_SERVER['HTTP_USER_AGENT']; $msie6 = ereg('Mozilla/4.0 (compatible; MSIE 6.0)', $user_agent); if ($msie6) { include( "http://○○/attention" ); } else { ?> <html>~ IE7のブラウザのうち、IE6と認識されるブラウザの法則性は分かりません。 いろいろと調べてみましたが、辿りつかず、類似の解説があれば教えてください。 また、上記スクリプトがおかしい点ありましたら教えてください! よろしくお願いします!

    • ベストアンサー
    • PHP
  • ユーザー判別

    よろしくお願いします HTTP_USER_AGENTでブラウザを判別するように、ブロードバンドとナローバンドを判別する事って出来るのでしょうか?

    • 締切済み
    • PHP
  • 携帯で携帯サイトを閲覧すると、なぜかPCサイトが表示されます。

    携帯で携帯サイトを閲覧すると、なぜかPCサイトが表示されます。 お世話なります。素人ですので説明にいたらない点が多々あると思いますが、どうか宜しくお願いします。 タイトルが分かりずらくてすみません。どういったことかといいますと、携帯から直接アドレスをひくと自分の携帯サイトが表示されるのに、auのEZwebのau oneトップから自分の携帯サイトを検索し表示させますと、なぜか、自分のPCサイトに飛んでしまいます。 なぜでしょうか? 以下の記述のindex.phpで同じドメインで携帯へ飛ばしています。 <?php /////////////////////////////////////////▼初期処理▼ //http://から始まるURLを指定 $docomo = "http://www.abc.com/m/index.html"; //ドコモの場合 $au = "http://www.abc.com/m/index.html"; //auの場合 $softbank = "http://www.abc.com/m/index.html"; //ソフトバンクの場合 $msie = "http://www.abc.com/index.html"; //IEの場合 $Netscape = "http://www.abc.com/index.html"; //Netscapeの場合 $opera = "http://www.abc.com/index.html"; //Operaの場合 $firefox = "http://www.abc.com/index.html"; //Firefoxの場合 $pc = "http://www.abc.com/index.html"; //上記機種以外 /////////////////////////////////////////▲初期処理終端▲ /////////////////////////////////////////▼携帯判別▼ if(isset($_SERVER['HTTP_USER_AGENT'])){ $user_agent = $_SERVER['HTTP_USER_AGENT']; if(eregi("DoCoMo",$user_agent)){header("Location: $docomo");} elseif(eregi("UP\.Browser",$user_agent)){header("Location: $au");} elseif(eregi("J-PHONE",$user_agent)){header("Location: $softbank");} elseif(eregi("Vodafone",$user_agent)){header("Location: $softbank");} elseif(eregi("SoftBank",$user_agent)){header("Location: $softbank");} elseif(eregi("J-EMULATOR",$user_agent)){header("Location: $softbank");} elseif(eregi("MSIE",$user_agent)){header("Location: $msie");} elseif(eregi("Netscape",$user_agent)){header("Location: $netscape");} elseif(eregi("Opera",$user_agent)){header("Location: $opera");} elseif(eregi("Firefox",$user_agent)){header("Location: $firefox");} else{header("Location: $pc");} }else{ print <<<END <html><body> HTTP_USER_AGENT Error<br /><br /> ユーザーエージェントが読み込めませんでした。<br /> </body></html> END; } /////////////////////////////////////////▲携帯判別終端▲ ?> あと、なぜかindex.phpよりindex.htmlを先によんでしまうようなので、.htaccessで以下のように記述してindex.phpを先に読ませています。 DirectoryIndex index.php index.html 宜しくお願いします。

    • ベストアンサー
    • PHP
  • ブラウザ毎の振り分け

    .htaccessを使って振り分けをしたいのですが、ネットを参考に書いてもサーバーでエラーを起こして困っています。たぶんどこかが違うんだと思うんですが… # .htaccess ここから # 携帯とPCを判別 # 携帯はkeitaiフォルダに移動 PCはPCフォルダに移動 # Options -Indexes # < IfModule mod_rewrite.c> # Internet Explorer 6 RewriteCond %{HTTP_USER_AGENT} Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) RewriteRule ^$ /ie6-8/ [R] # Internet Explorer 7 RewriteCond %{HTTP_USER_AGENT} Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) RewriteRule ^$ /ie6-8/ [R] # Internet Explorer 8 RewriteCond %{HTTP_USER_AGENT} Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) RewriteRule ^$ /ie6-8/ [R] # < /IfModule> # .htaccess ここまで と書いてます。テストはninjaのホームページスペースで行ってますが、本番は桜サーバーです。 新しく作ったページがHTML+CSS3なのでIE9を除きIEからのアクセスは同サーバー内のie6-8フォルダに飛ばしたいのです。このフォルダには、古いページを入れておきます。新しいページに非対応なブラウザは旧ページに誘導したいのです。 いっそのこと、「HTML5+CSS3非対応ブラウザからのアクセスは全員こちらへ」と命令できれば良いのですが、それは無理だと思うので個別指定でいこうと思ってます。 .htaccessでブラウザ毎にリダイヤルする方法を教えてください!

    • ベストアンサー
    • HTML
  • CSSでブラウザ判別した場合の表記方法

    スタイルシートでブラウザを判別して それにみあった表示を行うようにしたいと思っています。 header('content-type:text/css'); img{border:none;}#共通 p{color:#000000;}#共通 <?php $Agent = getenv( "HTTP_USER_AGENT" ); if( ereg( "Firefox", $Agent ) ){ print <<<END body{background-color:#FFFFFF;} #wrapper{ margin:0 auto; padding:0; } END; } elseif( ereg( "MSIE", $Agent ) ) { print <<<END body{background-color:#000000;} #wrapper{ margin:0 auto; padding:0; } END; } else { print <<<END body{background-color:#666666;} #wrapper{ margin:0 auto; padding:0; } END; } ?> スタイルシート側の記述を上記のようにしております。 ですが、どうしてもエラーが でてしまいます。 どこがおかしいかわからず困っております。 どうかお教えください。

    • ベストアンサー
    • PHP
  • phpの正規表現について

    phpの正規表現についてです。 よく入力されたメール・パスワードを判定するのに正規表現で判定させますが、今回の指定する条件は… ・半角英数、0~9の組み合わせ ・使用禁止文字は \ ' @ [ ] の5つ ・入力は8文字以内 例 if(ereg("^[0-9a-z\!\"\#\$\%\&\(\)\=\-\~\|\{\}\;\:\+\*\,\.\/\<\>\?\_]{1,8}$", $pw)){ 記号の意味でよくわからないのがあるのですが、 { }は文字数を指定するものでよろしいのでしょうか? {1,8} は1~8文字までという意味? \が入ると認証が通ってしまってい、困っています。 ユーザーの入力    MySQLの取得結果 例 123\        → データが入らない   \123        → 123   \\123        → \123   123\123      → 123123   \\          → \ といった不具合になってしまい、MySQL側でも入力されたデータと異なったデータが入ってしまいます。\が入っても認証されないようにするにはどうすればいいんでしょうか? 正規表現の参考にしたサイトは http://itbtech.itboost.co.jp/php/php_06.php です。アドバイスよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現のパターンに変数を指定したい

    perlでパターンマッチを行う際、正規表現で行いますが、パターン文字列内に変数を指定したい場合はどうすればよいのでしょうか? if ($ENV{HTTP_USER_AGENT} =~ /$pattern/) {  : } というようなことをしたいのですが、うまくいきません。 方法はありますでしょうか?

    • ベストアンサー
    • Perl
  • ネットスケープ6を簡単に判別する方法?

    ブラウザの判別方法についてなんですが、IEとNN4の判別方法については雑誌などでよく見かけるのですが、NN6を簡単に判別する方法が載っている本が見つけられませんでした。 NN6を簡単に判別する方法を知っている方がいたら、教えて下さい。 ちなみに、IEとNN4は次のようなif文で判別しています。 if (document.all) {  // IE if (document.layers) { // NN4 また、NN6と「Mozilla」は、別のものとして判断しないといけないのでしょうか? (JavaScriptでできることに、大きな違いがあるのでしょうか?) それと、最近よく耳にする「Opera」というブラウザも、IEやNNとはまった区別の判定方法をしなければいけないのでしょうか? このMozillaやOperaのJavaScriptに関する情報を載せているページなどがありましたら、是非教えて下さい。

  • IE9なのにIE7と判別される

    jsにてユーザーエージェント判別をして、 各ブラウザを判別し、bodyに各々のクラスをつけるようにしています。 IEのバージョンを調べるために、 if (appVersion.indexOf("msie 6.0") > -1) { $('body').addClass('ie6'); } このように書き、バージョンを判別しているのですが、、、 なぜかIE9でみているのにも関わらずIE7になってしまっています。。。 しかし違うパソコンで見るときちんとIE9になっているんですね。 何が原因なのでしょうか。 このようなことが起きるのであれば、 IEのバージョンの判別は辞めた方がよいのかなーとも思っています。 実際このようなことがユーザーの中で起こりうる可能性があるのならば、 IE9で崩れる原因になりかねないと思いましたので。。。 もし何か分かる方がいらっしゃったらご教示いただければ幸いです。 どうぞ宜しくお願い致します。

    • 締切済み
    • CSS
  • 正規表現について

    PHPにおける正規表現についての質問なのですが、 preg_match('#^/user/(?P<id>[^/]+)$#', $string) 第一引数の正規表現がいまいち理解できません。 ご教授のほど宜しく御願いします。

    • 締切済み
    • PHP

専門家に質問してみよう