[Smarty] モバイルデバイスからのアクセスを識別する

バックエンドで識別処理を実装すればいいのだけど、事情によりSmartyテンプレート内で行いたい。

ユーザエージェントで識別するのが定石か。Smartyだと$_SERVER[‘HTTP_USER_AGENT’]を以下のように取得できる。識別処理を確実にするために全て小文字で取得しておく。

ユーザエージェント文字列に、部分文字列として以下が含まれるか調べる。

  • Android
  • webOS
  • iPhone
  • iPad
  • iPod
  • BlackBerry
  • IEMobile
  • Opera Mini

部分文字列を調べるには以下を使う。もっと効率の良い方法があるかもしれない。

参考: Smarty 文字列検索 | 私的雑録
http://php.o0o0.jp/article/smarty-regex

すると、判定処理は以下のように書ける。