web関連

phpでIE、Edgeかどうか判別する

phpでIE、Edgeかどうか判別する

IEとEdgeだけ表示を変えないといけない時があってphpで判別できんのかどうか調べたときの備忘録

IEとEdgeの判別する際に使うコード

以下のコードでサイトにアクセスするuserAgentを取得できる、これ使う
※何のブラウザをつかっているかの情報がわかる

<?php echo $_SERVER['HTTP_USER_AGENT']; ?>

functions.phpで実際に使ったコード

// 判定するのに文字列を小文字にする
$browser  = strtolower($_SERVER['HTTP_USER_AGENT']);
// ブラウザ情報の文字列を基に判定する
if (mb_strstr($browser  , 'edge')) {
    echo('Edgeっす');
} elseif (mb_strstr($browser  , 'trident') || mb_strstr($browser  , 'msie')) {
    echo('Internet Explorerっす');
}

調べていた時に「MSIE」が文字列にあるかどうかでIEか判別している記事あったけどIE11以前は「MSIE」がuserAgentの情報に含まれていたみたいっすね
今は「trident」で判別しているみたいだけどまた変わったりするのかな?
そもそもIE11は最終版だから次は無いや…

↓javascriptでもwindow.navigator.userAgentで判定できるみたい
静的なHTMLのサイトで使ってみよ

参考

▼使用してるブラウザを判定したい(javascript)
https://qiita.com/sakuraya/items/33f93e19438d0694a91d

文字列を検索する関数strstr()調べてて、同じく文字列を検索するmb_strstrってのがあった。
mb_strstrはマルチバイト文字(全角文字)を検索できるんすね(メモ)