Categories
PHP+MySQL

PHPでユーザーエージェント毎の振り分け

ホームページを閲覧する端末(スマートフォン, タブレット,携帯電話,PC)がいろいろと出てきているため、振り分けがどうしても必要になってきます。
振り分けの方法は、javascript や htaccess でもできますが、ここでは PHP の方法を記述します。
どの方法も基本的には、ユーザーエージェントを取得して、以下のような判定を行います。

  • 「Android」と「Mobile」の記述があれば「スマホ」
  • 「iPhone」の記述があれば「スマホ」
  • 「ipad」の記述があれば「スマホ」
  • 「Android」の記述があり「Mobile」の記述がなければ「タブレット」
  • 「ipad」の記述があれば「タブレット」
  • 「DoCoMo」の記述があれば「携帯電話」
  • 「KDDI」の記述があれば「携帯電話」
  • 「SoftBank」か「Vodafone」か「J-PHONE」の記述があれば「携帯電話」
  • 上記のいずれでもない場合は「パソコン」

PHPで書くと以下の通り。

function uaFuriwake(){
	// ユーザーエージェント取得
	$userAgent = $_SERVER['HTTP_USER_AGENT'];

	// 振り分け
	if( isSmartphone( $userAgent ) ) $value = 'スマートフォン';
	else if( isTablet( $userAgent ) ) $value = 'タブレット端末';
	else if( isCellularphone( $userAgent ) ) $value = '携帯電話';
	else $value = 'パソコン';

	return( $value );
}

function isSmartphone( $ua ){
	// Android,iPhone,iPod
	if( ( ( strpos( $ua, 'Android' ) != FALSE ) && ( strpos( $ua, 'Mobile' ) != FALSE ) ) || ( strpos( $ua, 'iphone' ) != FALSE ) || ( strpos( $ua, 'ipod' ) != FALSE ) ) return( TRUE );
	else return( FALSE );
}

function isTablet( $ua ){
	// Android, iPad
	if( ( strpos( $ua, 'Android' ) != FALSE ) || ( strpos( $ua, 'ipad' ) != FALSE ) ) return( TRUE );
	else return( FALSE );
}

function isCellularphone( $ua ){
	// NTT docomo, au KDDI, SoftBank
	if( ( strpos( $ua, 'DoCoMo' ) != FALSE ) || ( strpos( $ua, 'KDDI' ) != FALSE ) || ( strpos( $ua, 'SoftBank' ) != FALSE ) || ( strpos( $ua, 'Vodafone' ) != FALSE ) || ( strpos( $ua, 'J-PHONE' ) != FALSE ) ) return( TRUE );
	else return( FALSE );
}