携帯のキャリア判別と機種判別のソースがあったからメモっとこう。
携帯を携帯用サイトに飛ばしたりとか、
各キャリアや機種ごとに違う処理をしたい時に使えるね。
■キャリア判別のサンプルソース
* 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”);