PHPプログラムに関する各種メモ書き

SmartyプラグインでOSとブラウザ判別を行う

ファイル名 modifier.is_ua_with_osmb.php で下記コードを保存し Smartyの plugin フォルダに入れます。

<?php
// Version 1.2
function smarty_modifier_is_ua_with_osmb($arg,$debug=false){
	$useos; $browser; $os_browser;
	if (  preg_match('/Mac/',$_SERVER['HTTP_USER_AGENT']) ){ $useos='mac'; }
	elseif (  preg_match('/Win/',$_SERVER['HTTP_USER_AGENT']) ){ $useos='win'; }
	else { $useos = 'other'; }
	if ( preg_match('/Opera/',$_SERVER['HTTP_USER_AGENT']) && preg_match('/Version\/([0-9]+)/',$_SERVER['HTTP_USER_AGENT'], $r) ){ $browser = 'opera'.$r[1]; }
	elseif ( preg_match('/MSIE ([0-9])+/',$_SERVER['HTTP_USER_AGENT'], $r) ){ $browser = 'ie'.$r[1]; }
	elseif ( preg_match('/Safari/',$_SERVER['HTTP_USER_AGENT']) && preg_match('/Version\/([0-9]+)/',$_SERVER['HTTP_USER_AGENT'], $r) ){ $browser = 'safari'.$r[1]; }
	elseif ( preg_match('/Chrome\/([0-9]+)/',$_SERVER['HTTP_USER_AGENT'],$r) ){ $browser = 'chrome'.$r[1]; }
	elseif ( preg_match('/Firefox\/([0-9]+)/',$_SERVER['HTTP_USER_AGENT'], $r) ){ $browser = 'firefox'.$r[1]; }
	elseif ( preg_match('/Gecko/',$_SERVER['HTTP_USER_AGENT']) ){ $browser = 'gecko'; }
	else{ $browser = $_SERVER['HTTP_USER_AGENT']; }
	$os_browser = $useos.'_'.$browser;
	if ($debug){
		return "{$os_browser} : {$_SERVER['HTTP_USER_AGENT']}";
	}
	else{
		if ( strcmp($arg, $os_browser)==0 ){ return true; }
		else{ return false; }
	}
}
?>

■ 使い方

// デバッグモード
{ ""|is_ua_with_osmb:debug }
// 例
{ if "mac_safari4"|is_ua_with_osmb }このブラウザは mac版safari4です
{ elseif "win_ie8"|is_ua_with_osmb }このブラウザは win版IE8です
{ elseif "win_firefox3"|is_ua_with_osmb }このブラウザは win版firefox3です
{ else }それ以外のブラウザです
{ /if }

まず先頭に OSの種類を記述し、アンダースコアでブラウザとメジャーバージョンを記述します。

(記述は全て小文字)

関連エントリー

No.674
03/23 13:23

edit

Smarty