Home > PHP > 携帯の機種名を抽出するPHP

携帯の機種名を抽出するPHP

PHP

今会社で携帯サイトを作っているのですが、その際、携帯の機種毎に振り分ける必要が出てきて、その処理をPHPで作ったのでメモ。

というか、機種名を表示するまでの部分ですが(^^;)

最初に、PHPの、

$_SERVER['HTTP_USER_AGENT'];

で、携帯のUser-Agentが取得できるわけですが、

その文字列によって条件分けします。

ただし、auは機種名ではなく、デバイスIDという特殊な文字列が出てくるので、それを機種名に変更する必要があります。

auに関しては、適宜、デバイスIDを機種名に変換してください。

以下が参考になります。

では、機種判別のスクリプトです。

//User-Agentを取得
$agent = $_SERVER['HTTP_USER_AGENT'];

if(ereg("^DoCoMo", $agent)){
	//DoCoMoの場合

	if (strpos($agent, "/1.0") > 0 && strpos($agent, "/", 11) >= 0){
		$device = substr($agent, 11, (strpos($agent, "/", 11) - 11));
	} else if (strpos($agent, "/2.0") > 0 && strpos($agent, "(") >= 0){
		$device = substr($agent, 11, strpos($agent, "(" ) - 11);
	} else {
		$device = substr($agent, 11);
	}
	echo $device;
	exit;

} else if (ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){
	//Softbankの場合
	$device = $_SERVER{'HTTP_X_JPHONE_MSNAME'};
	echo $device;
	exit;

} else if (ereg("^UP.Browser|^KDDI", $agent)){
	//auの場合
	$device = substr($agent, (strpos($agent, "-") + 1), (strpos($agent, " ") - strpos($agent, "-") - 1));
	//デバイスIDから機種名に変換
	if (array_key_exists(trim($device),$au-devices)){
		echo $au_devices[$device];
		exit;
	} else {
		echo "other au model";
		exit;
	}
}

ちなみに、auのデバイス名は以下のような配列を読み込んで使ってます。

<?php

/*
 * auのデバイスIDと機種名の対応表
 * http://www.au.kddi.com/ezfactory/tec/spec/4_4.html
 */

// 2009/07/03現在

$au_devices = array(
"HI3G" => "Mobile Hi-Vision CAM Wooo"
,"KC3Q" => "misora[iida]"
,"TS3O" => "biblio"
,"TS3P" => "T002"
,"SH3B" => "SH002"
,"KC3O" => "K002"
,"SH3C" => "Sportio water beat"
,"CA3E" => "CA002"
,"SN3K" => "G9[iida]"
,"SN3J" => "S001"
,"PT35" => "NS02"
,"MA35" => "P001"
,"TS3N" => "T001"
,"HI3F" => "H001"
,"SH38" => "SH001"
,"CA3D" => "CA001"
,"SN3I" => "Premier3"
,"KC3N" => "NS01"
,"KC3M" => "K001"
,"SN3H" => "Xmini"
,"HI3E" => "W63H"
,"TS3M" => "W65T"
,"CA3C" => "W63CA"
,"SH37" => "W64SH"
,"KC3I" => "W65K"
,"SN3G" => "W64S"
,"MA34" => "W62P"
,"TS3L" => "W64T"
,"KC3K" => "W63Kカメラ無し"
,"SH36" => "URBANO"
,"PT34" => "W62PT"
,"SA3E" => "W64SA"
,"CA3B" => "W62CA"
,"HI3D" => "W62H"
,"SH35" => "W62SH"
,"SN3F" => "re"
,"KC3H" => "W63K"
,"TS3K" => "Sportio"
,"TS3J" => "W62T"
,"SA3D" => "W63SA"
,"KC3G" => "W62K"
,"SN3D" => "W61S"
,"SA3C" => "W61SA"
,"SN3E" => "W62S"
,"TS3I" => "W61T"
,"HI3C" => "W61H"
,"ST34" => "W62SA"
,"PT33" => "W61PT"
,"MA33" => "W61P"
,"CA3A" => "W61CA"
,"KC3D" => "W61K"
,"SA3B" => "W54SA"
,"SH34" => "W61SH"
,"SN3C" => "W54S"
,"TS3H" => "W56T"
,"TS3G" => "W55T"
,"HI3B" => "W53H"
,"KC3B" => "W53K/W64K"
,"ST33" => "INFOBAR 2"
,"KC3E" => "W44K IIカメラなしモデル"
,"SN3B" => "W53S"
,"CA39" => "W53CA"
,"ST32" => "W53SA"
,"TS3E" => "W54T"
,"SH33" => "W52SH"
,"CA38" => "W52CA"
,"MA32" => "W52P"
,"SN3A" => "W52S"
,"TS3D" => "W53T"
,"SA3A" => "W52SA"
,"HI3A" => "W52H"
,"KC3A" => "MEDIA SKIN"
,"SH32" => "W51SH"
,"SN39" => "W51S"
,"TS3C" => "W52T"
,"TS3B" => "W51T"
,"SA39" => "W51SA"
,"HI39" => "W51H"
,"CA37" => "W51CA"
,"MA31" => "W51P"
,"KC39" => "W51K"
,"TS39" => "DRAPE"
,"TS3A" => "W47T"
,"SN38" => "W44S"
,"KC38" => "W44K/K II"
,"SA38" => "W43SA"
,"TS38" => "W45T"
,"CA35" => "W43CA"
,"HI38" => "W43H/H II"
,"SN37" => "W43S"
,"KC37" => "W43K"
,"ST31" => "W42SA"
,"SH31" => "W41SH"
,"CA34" => "W42CA"
,"HI37" => "W42H"
,"TS37" => "W44T/T II/T III"
,"TS35" => "neon"
,"TS36" => "W43T"
,"SN36" => "W42S"
,"KC36" => "W42K"
,"KC35" => "W41K"
,"SA36" => "W41SA"
,"TS34" => "W41T"
,"HI36" => "W41H"
,"CA33" => "W41CA"
,"SN34" => "W41S"
,"HI34" => "PENCK"
,"SA35" => "W33SA/SA II"
,"TS33" => "W32T"
,"SA34" => "W32SA"
,"KC34" => "W32K"
,"HI35" => "W32H"
,"SN33/SN35" => "W32S"
,"CA32" => "W31CA"
,"TS32" => "W31T"
,"SN32" => "W31S"
,"KC33" => "W31K/K II"
,"SA33" => "W31SA/SA II"
,"SA32" => "W22SA"
,"HI33" => "W22H"
,"CA31" => "W21CA/CA II"
,"TS31" => "W21T"
,"SA31" => "W21SA"
,"SN31" => "W21S"
,"KC32" => "W21K"
,"HI32" => "W21H"
,"KC31" => "W11K"
,"HI31" => "W11H"
,"SH39" => "E05SH"
,"CA36" => "E03CA"
,"SA37" => "E02SA"
,"ST2C" => "Sweets cute"
,"ST29" => "Sweets pure"
,"CA28" => "G'zOne TYPE-R"
,"ST26" => "Sweets"
,"ST25" => "talby"
,"ST22" => "INFOBAR"
,"TS2E" => "A5529T"
,"KC2A" => "A5528K"
,"SA2A" => "A5527SA"
,"KC29" => "A5526K"
,"ST2D" => "A5525SA"
,"TS2D" => "A5523T"
,"SA29" => "A5522SA"
,"KC28" => "A5521K"
,"ST2A" => "A5520SA/SA II"
,"ST28" => "A5518SA"
,"TS2C" => "A5517T"
,"TS2B" => "A5516T"
,"KC27" => "A5515K"
,"ST27" => "A5514SA"
,"CA27" => "A5512CA"
,"TS2A" => "A5511T"
,"TS29" => "A5509T"
,"ST24" => "A5507SA"
,"TS28" => "A5506T"
,"SA27" => "A5505SA"
,"TS27" => "A5504T"
,"SA26" => "A5503SA"
,"KC24/KC25" => "A5502K"
,"TS26" => "A5501T"
,"CA26" => "A5407CA"
,"CA25" => "A5406CA"
,"ST23" => "A5405SA"
,"SN25" => "A5404S"
,"CA24" => "A5403CA"
,"SN24" => "A5402S"
,"CA23" => "A5401CA II"
,"CA23" => "A5401CA"
,"ST21" => "A5306ST"
,"KC22" => "A5305K"
,"TS24" => "A5304T"
,"HI24" => "A5303H II"
,"HI23" => "A5303H"
,"CA22" => "A5302CA"
,"TS23" => "A5301T"
,"SA22" => "A3015SA"
,"PT23" => "A1407PT"
,"PT22" => "A1406PT"
,"PT21" => "A1405PT"
,"SN29" => "A1404S/S II"
,"KC26" => "A1403K"
,"SN27" => "A1402S II"
,"SN28" => "A1402S IIカメラ無し"
,"SN26" => "A1402S"
,"KC23" => "A1401K"
,"SA28" => "A1305SA"
,"TS25" => "A1304T II"
,"TS25" => "A1304T"
,"TS25" => "A1304Tカメラ無し"
,"SA25" => "A1303SA"
,"SA24" => "A1302SA"
,"SN23" => "A1301S"
,"KC26" => "B01K"
,"SN21" => "A3014S"
,"TS22" => "A3013T"
,"CA21" => "A3012CA"
,"SA21" => "A3011SA"
,"SN22" => "A1101S"
,"TS21" => "C5001T"
,"MA21" => "C3003P"
,"KC21" => "C3002K"
,"HI21" => "C3001H"
);
?>

参考URL
PHPで携帯の機種名取得|Webで使えるテクニック!Webで困ったときのメモ帳

関連記事

Sponsored Link

Google+

facebook

zenback

Comments:0

Comment Form
Remember personal info

Trackbacks:2

Trackback URL for this entry
http://www.multiburst.net/sometime-php/2009/07/selecting-moble-device-on-php/trackback/
Listed below are links to weblogs that reference
携帯の機種名を抽出するPHP from Sometime PHP
pingback - ITキヲスク | 2009年7/12~7/18の週間ブックマーク より 2009/07/19

[...] 各携帯キャリアの機種名を抽出するプログラム [...]

trackback - muneto.murakami.biz Weblog より 2009/10/22

【携帯サイト制作】第二十二回auのデバイスIDを端末名に変換する。

例えば以下のようにphpでauのユーザエージェントを取得します。
$uid = $_SERVER [ 'HTTP_X_UP_SUBNO' ];
$uidには以下のような文字列が入ると思います。(W53Tの場合)
KDDI-TS3D UP.Browser/6.2.0.13.1.5 (GUI) MMP/2….

Additional comments powered by BackType

Home > PHP > 携帯の機種名を抽出するPHP

Subscribe This Blog
Subscribe This Blog
FeedBurner

Search
Categories
Tag Cloud
Twitter Counter
Archives
My Other Blogs
Affiliate Blogs
Translator
Japanese flagEnglish flag

Return to page top