携帯電話のUserAgentから機種名を抜き出す方法(多分正規表現)を教えてください。

■機種名
P900i
V801SA
MA21
HI01
■UserAgent
”DoCoMo/2.0 P900i(c100;TB;W20H09)”,
”J-PHONE/5.0/V801SA/SN350222671337837 SA/0001JP Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0”,
”KDDI-MA21 UP.Browser/6.0.2.276 (GUI) MMP/1.1”,
”UP.Browser/3.01-HI01 UP.Link/3.4.5.2”,

そんで機種名に対して解像度やスクラッチパッドサイズをDBに入れて紐付けておき、各機種毎の表示や動作を変えたいと考えています。
ご指摘などよろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:akimasa2000 No.1

回答回数276ベストアンサー獲得回数0

ポイント17pt

/P900i|V801SA|MA21|HI01/

かなり効率が悪いですがこのようなのはいかがですか?

id:kunitz

ありがとうございます!

日本の全ての携帯でお願いします。

たとえばDoCoMoの今まで発売した携帯が放つ全てのUserAgentをパースして機種名だけ抜き出す。

そういった正規表現です。

2004/07/15 20:33:19
id:akimasa2000 No.2

回答回数276ベストアンサー獲得回数0

ポイント17pt

http://www.kabocha.org/jelfe/11/02.html

山口家の逆襲->EzWebのためのperl(CGI)->ユーザーエージェント

EzwebのUserAgentの正規表現です

http://specters.net/cgipon/labo/c_dist.html

モバイルCGI研究(総合編)端末判別法 [CGIぽん]

参考

id:kunitz

ありがとうございます!

2004/07/15 22:27:05
id:dolceromanzo No.3

回答回数12ベストアンサー獲得回数0

ポイント18pt

ドコモはこれです

PDC

DoCoMo/1.0/SO505i/c20/TB/W21H09/serNMAIA000001

(DoCoMo/1.0/機種名/キャッシュ/状態コード/ブラウザ表示可能バイト数/個体識別情報

FOMA

DoCoMo/2.0 P900i(c100;TB;W22H12;serXXXXXXXXXX)

(DoCoMo/2.0 機種名(キャッシュ;状態コード;ブラウザ表示可能バイト数;個体識別情報)

1.USER_AGENTを/で分割して(※A)、第1番目が「DoCoMO」ならi-mode、「J-PHONE」ならVodafone live!、「Up.Browser」ならEZwebのHDML、先頭4文字がKDDIならEZwebのWAP2.0

2.i-modeの場合、Aの2番目をさらに空白と/と;と(で分割し(※B)、Bの1番目が「1.0」ならPDC、「2.0」ならFOMA。

3.PDCならAの3番目が機種名、FOMAならBの2番目が機種名

1.Aの3番目が機種名。_XXと付いている機種もあるので削除して管理してもよい。

id:kunitz

ありがとうございます!

ずばりな正規表現までお願いしたいのですが。。。

2004/07/16 10:46:41
id:dolceromanzo No.4

回答回数12ベストアンサー獲得回数0

ポイント18pt

http://www.hatena.ne.jp/1089890054

携帯電話のUserAgentから機種名を抜き出す方法(多分正規表現)を教えてください。 ■機種名 P900i V801SA MA21 HI01 ■UserAgent ”DoCoMo/2.0 P900i(c100;TB;W20H09)”, ”.. - 人力検索はてな

簡単ですがPHPならこんなかんじです

$device_id に機種名が入ります。

――――――――――――――――――――――――――――――――――――――――

$ua = explode(”/”, $_SERVER[”HTTP_USER_AGENT”]);

switch ($ua[0])

{

case ”DoCoMo”:

$tmp = split(”[ /(]”, $ua[1]);

if ($tmp[0] == ”1.0”) $device_id = $ua[2];

else if ($tmp[0] == ”2.0”) $device_id = $tmp[1];

break;

case ”J-PHONE”:

$device_id = strtok($ua[2],”_”);

break;

case ”UP.Browser”:

$tmp = split(”[ -]”, $ua[1]);

$device_id = $tmp[1];

break;

default:

if (substr($ua[0], 0, 4) == ”KDDI”)

{

$tmp = split(”[ -]”, $ua[0]);

$device_id = $tmp[1];

}

}

――――――――――――――――――――――――――――――――――――――――

id:kunitz

ありがとうございます!

2004/07/16 11:03:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません