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