携帯のキャリア判別と機種判別のソース

携帯のキャリア判別と機種判別のソースがあったからメモっとこう。

携帯を携帯用サイトに飛ばしたりとか、
各キャリアや機種ごとに違う処理をしたい時に使えるね。
■キャリア判別のサンプルソース

* CGI(Perl)の場合

$agent = $ENV{‘HTTP_USER_AGENT’};
if($agent =~ /DoCoMo/){

}elsif($agent =~ /UP.Browser/){

}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){

}

* PHPの場合

$agent = $_SERVER[‘HTTP_USER_AGENT’];
if(ereg(“DoCoMo”, $agent)){

}else if(ereg(“UP.Browser”, $agent)){

}else if(ereg(“J-PHONE|Vodafone|SoftBank”, $agent)){

}

* Javaの場合

String agent = request.getHeader(“user-agent”);
if(agent.indexOf(“DoCoMo”) >= 0){

}else if(agent.indexOf(“UP.Browser”) >= 0){

}else if(agent.indexOf(“J-PHONE”) >= 0 || agent.indexOf(“Vodafone”) >= 0 || agent.indexOf(“SoftBank”) >= 0){

}

■機種判別のサンプルソース(機種名を取得する)

* CGI(Perl)の場合
o ドコモ

$agent = $ENV{‘HTTP_USER_AGENT’};
if(index($agent, “DoCoMo/1.0”) >= 0 && index($agent, “/”, 11) >= 0){
$device = substr($agent, 11, (index($agent, “/”, 11) – 11));
}elsif(index($agent, “DoCoMo/2.0”) >= 0 && index($agent, “(“, 11) >= 0){
$device = substr($agent, 11, (index($agent, “(“, 11) – 11));
}else{
$device = substr($agent, 11);
}

o au(エージェントは、2タイプとも取得できる)

$agent = $ENV{‘HTTP_USER_AGENT’};
$device = substr($agent, (index($agent, “-“) + 1), (index($agent, ” “) – index($agent, “-“) – 1));

o ソフトバンク(x-jphone-msnameで機種名だけ取得できる)

$device = $ENV{‘HTTP_X_JPHONE_MSNAME’};

* PHPの場合
o ドコモ

$agent = $_SERVER{‘HTTP_USER_AGENT’};
if(strpos($agent, “DoCoMo/1.0”) >= 0 && strpos($agent, “/”, 11) >= 0){
$device = substr($agent, 11, (strpos($agent, “/”, 11) – 11));
}elsif(strpos($agent, “DoCoMo/2.0”) >= 0 && strpos($agent, “(“, 11) >= 0){
$device = substr($agent, 11, (strpos($agent, “(“, 11) – 11));
}else{
$device = substr($agent, 11);
}

o au(エージェントは、2タイプとも取得できる)

$agent = $_SERVER{‘HTTP_USER_AGENT’};
$device = substr($agent, (strpos($agent, “-“) + 1), (strpos($agent, ” “) – strpos($agent, “-“) – 1));

o ソフトバンク(x-jphone-msnameで機種名だけ取得できる)

$device = $_SERVER{‘HTTP_X_JPHONE_MSNAME’};

* Javaの場合
o ドコモ

String agent = request.getHeader(“user-agent”);
String device = “”;
if(agent.indexOf(“DoCoMo/1.0”) >= 0 && agent.indexOf(“/”, 11) >= 0){
device = agent.substring(11, agent.indexOf(“/”, 11));
}else if(agent.indexOf(“DoCoMo/2.0”) >= 0 && agent.indexOf(“(“, 11) >= 0){
device = agent.substring(11, agent.indexOf(“(“, 11));
}else{
device = agent.substring(11);
}

o au(エージェントは、2タイプとも取得できる)

String agent = request.getHeader(“user-agent”);
String device = agent.substring(agent.indexOf(“-“) + 1, agent.indexOf(” “));

o ソフトバンク(x-jphone-msnameで機種名だけ取得できる)

String device = request.getHeader(“x-jphone-msname”);