2015年版PHPユーザエージェント判別・判定

Firefox OSやWindows Phoneの登場でユーザエージェント情報に依存して処理を行っている部分が相次いで見直しを迫られることになりますので、2015年版JavaScriptユーザエージェント判別・判定と同趣旨でPHPにてスマートフォン・タブレットまわりのユーザエージェントを判別・判定して分岐処理を行う手順をご紹介します。

<?php
class UserAgent{
	private $ua;
	private $device;
	public function set(){
		$this->ua = mb_strtolower($_SERVER['HTTP_USER_AGENT']);
		if(strpos($this->ua,'iphone') !== false){
			$this->device = 'mobile';
		}elseif(strpos($this->ua,'ipod') !== false){
			$this->device = 'mobile';
		}elseif((strpos($this->ua,'android') !== false) && (strpos($this->ua, 'mobile') !== false)){
			$this->device = 'mobile';
		}elseif((strpos($this->ua,'windows') !== false) && (strpos($this->ua, 'phone') !== false)){
			$this->device = 'mobile';
		}elseif((strpos($this->ua,'firefox') !== false) && (strpos($this->ua, 'mobile') !== false)){
			$this->device = 'mobile';
		}elseif(strpos($this->ua,'blackberry') !== false){
			$this->device = 'mobile';
		}elseif(strpos($this->ua,'ipad') !== false){
			$this->device = 'tablet';
		}elseif((strpos($this->ua,'windows') !== false) && (strpos($this->ua, 'touch') !== false && (strpos($this->ua, 'tablet pc') == false))){
			$this->device = 'tablet';
		}elseif((strpos($this->ua,'android') !== false) && (strpos($this->ua, 'mobile') === false)){
			$this->device = 'tablet';
		}elseif((strpos($this->ua,'firefox') !== false) && (strpos($this->ua, 'tablet') !== false)){
			$this->device = 'tablet';
		}elseif((strpos($this->ua,'kindle') !== false) || (strpos($this->ua, 'silk') !== false)){
			$this->device = 'tablet';
		}elseif((strpos($this->ua,'playbook') !== false)){
			$this->device = 'tablet';
		}else{
			$this->device = 'others';
		}
		return $this->device;
	}
}

上記コードを「ua.class.php」のファイル名で保存して利用する例を以下に示します。

使い方

require_once "ua.class.php";
$ua = new UserAgent();
if($ua->set() === "mobile") {
//この中のコードはスマホにのみ適用
}elseif($ua->set() === "tablet"){
//この中のコードはタブレットにのみ適用
}else{
//この中のコードはスマホとタブレット以外に適用
}

スマートフォンのユーザエージェントとして判定の対象にしているもの

  • iPhone(ユーザエージェント情報に「iPhone」をもつことを条件に抽出)
  • iPod(ユーザエージェント情報に「iPod」をもつことを条件に抽出)
  • Windows OS スマートフォン(ユーザエージェント情報に「Windows」と「Phone」をあわせもつことを条件に抽出)
  • Android OS スマートフォン(ユーザエージェント情報に「Android」と「Mobile」をあわせもつことを条件に抽出)
  • Firefox OS スマートフォン(ユーザエージェント情報に「Firefox」と「Mobile」をあわせもつことを条件に抽出)
  • BlackBerry OS スマートフォン(ユーザエージェント情報に「BlackBerry」をもつことを条件に抽出)

タブレットのユーザエージェントとして判定の対象にしているもの

  • iPad(ユーザエージェント情報に「iPad」をもつことを条件に抽出)
  • Kindle(ユーザエージェント情報に「Kindle」または「Silk」をもつことを条件に抽出)
  • Android OS タブレット(ユーザエージェント情報に「Android」をもつが「Mobile」はもたないことを条件に抽出)
  • Windows OS タブレット(ユーザエージェント情報に「Windows」と「Touch」をあわせもち、かつ「Tablet PC」をもたないことを条件に抽出)
  • Firefox OS タブレット(ユーザエージェント情報に「Firefox」と「Tablet」をあわせもつことを条件に抽出)
  • BlackBerry OS タブレット(ユーザエージェント情報に「PlayBook」をもつことを条件に抽出)
Updated / Published