【PHP】ユーザーエージェント(User Agent)からデバイスやキャリアを判別するクラス

スマホ・タブレット・携帯(ガラケー)・PCなどデバイスごとに振り分ける処理をしたいので、各デバイス情報を取得したい。

前回作った、ユーザーエージェント(User Agent)を取得してデバイスを判別するクラスを改造して、携帯(ガラケー)情報とキャリア情報も取得できるようにした。

ユーザーエージェント判定クラス(改)

class UserAgent{
	
	private $ua;
	private $device;
	private $career;
 
	public function UserAgent(){
		$this->deviceCheck();
	}
	
	public function careerCheck(){
	
		//ユーザーエージェント取得
		$this->ua = $_SERVER['HTTP_USER_AGENT'];
 
		if(strpos($this->ua,'DoCoMo') !== false){
			//DoCoMo
			$this->career = 'docomo';
		}
		elseif(strpos($this->ua,'UP.Browser') !== false){
			//au
			$this->career = 'au';
		}
		elseif((strpos($this->ua,'SoftBank') !== false) || (strpos($this->ua, 'Vodafone') !== false) || (strpos($this->ua,'J-PHONE') !== false) || (strpos($this->ua,'SMOT') !== false)){
			//SoftBank
			$this->career = 'softbank';
		}
		elseif(strpos($this->ua,'WILLCOM') !== false){
			//WILLCOM
			$this->career = 'willcom';
		}
		elseif(strpos($this->ua,'emobile') !== false){
			//eモバイル
			$this->career = 'emobile';
		}
		else{
			//不明
			$this->career = 'unknown';
		}
	}
	 
	public function deviceCheck(){
		 
		//ユーザーエージェント取得
		$this->ua = $_SERVER['HTTP_USER_AGENT'];
		$this->careerCheck();
 
		if(strpos($this->ua,'iPhone') !== false){
			//iPhone
			$this->device = 'sp';
		}
		elseif(strpos($this->ua,'iPad') !== false){
			//iPad
			$this->device = 'tb';
		}
		elseif((strpos($this->ua,'Android') !== false) && (strpos($this->ua, 'Mobile') !== false)){
			//Android
			$this->device = 'sp';
		}
		elseif(strpos($this->ua,'Android') !== false){
			//Android
			$this->device = 'tb';
		}
		elseif($this->career != 'unknown'){
			//携帯
			$this->device = 'mb';
		}
		else{
			//PC
			$this->device = 'pc';
		}
	}
	
	public function getDevice(){
		return $this->device;
	}
	
	public function getCareer(){
		$this->careerCheck();
		return $this->career;
	}
}

実行

$ua = new UserAgent();

// スマホ:sp タブレット:tb 携帯:mb PC:pc
echo $ua->getDevice();

getCareer()でキャリア情報も取得できるようにしました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>