mabots' blog

知のレバレッジを最大化せよ (旧はてなダイアリーから移転しました。)

PHPで携帯のUser Agentを自動判別するPEARライブラリ

モバイル版を作りたい、そんな要望にこたえるため、フロントコントローラーの修正をする場合に携帯のUser Agentを自動判別する便利なPEARライブラリがあります。(CPANにも同様の本家のものがあり、そちらがベースになってます)

http://pear.php.net/package/Net_UserAgent_Mobile/

Authorの方はテスト駆動開発の講義のセミナかなにかでお話をきいていた人でした。恐れ入ります。。。
なお、pear install するときは-fスイッチをいれておいてあげてください。


サンプルソース(転載してますので更新される恐れがあります)

下記はpear.php.netに記載のものですが、実際には、$agentのメソッドで、3Gかどうかなどを確認することができますので、キャリアごと、3Gかどうかごとなどで切り替えることも可能です。

転載元

http://pear.php.net/package/Net_UserAgent_Mobile/docs/latest/Net_UserAgent_Mobile/Net_UserAgent_Mobile.html

以下ソース、

require_once 'Net/UserAgent/Mobile.php';

$agent = &Net_UserAgent_Mobile::factory($agent_string);
// or $agent = &Net_UserAgent_Mobile::factory(); // to get from $_SERVER

if ($agent->isDoCoMo()) {
// or if ($agent->getName() == 'DoCoMo')
// or if (strtolower(get_class($agent)) == 'http_mobileagent_docomo')
// it's NTT DoCoMo i-mode
// see what's available in Net_UserAgent_Mobile_DoCoMo
} elseif ($agent->isVodafone()) {
// it's Vodafone(J-PHONE)
// see what's available in Net_UserAgent_Mobile_Vodafone
} elseif ($agent->isEZweb()) {
// it's KDDI/EZWeb
// see what's available in Net_UserAgent_Mobile_EZweb
} else {
// may be PC
// $agent is Net_UserAgent_Mobile_NonMobile
}

$display = $agent->getDisplay(); // Net_UserAgent_Mobile_Display
if ($display->isColor()) {
...
}