携帯会員サイトについて - PHPプロ!Q&A掲示板
- function getMobileDeviceInfo()
- {
- // 変数初期化
- $ret = array( 'carrier' => '' );
- $user_agent = getRequestHeader('HTTP_USER_AGENT');
- if (preg_match("/^DoCoMo\/2\.0 (.*)$/", $user_agent, $m)) {
- // docomo FOMA
- if (preg_match("/^(.*?)\((.*)\)$/", $m[1], $n)) {
- $ret['carrier'] = CARRIER_DOCOMO;
- $ret['device'] = $n[1];
- if (preg_match("/(ser[0-9a-zA-Z]+)(?:;(icc[0-9a-zA-Z]+))?/", $n[2], $s)) {
- $ret['docomo_utn'] = $s[1];
- $ret['docomo_fomacard_id'] = isset($s[2]) ? $s[2] : "";
- }
- $ret['docomo_imode_id'] = str_replace(" ", "", getRequestHeader('HTTP_X_DCMGUID'));
- }
- } else if (preg_match("/^DoCoMo\/1\.0\/(.*)$/", $user_agent, $m)) {
- // docomo MOVA
- if (preg_match("/^(.*?)\/(.*)$/", $m[1], $n)) {
- $ret['carrier'] = CARRIER_DOCOMO;
- $ret['device'] = $n[1];
- if (preg_match("/(ser[0-9a-zA-Z]+)(?:;(icc[0-9a-zA-Z]+))?/", $n[2], $s)) {
- $ret['docomo_subscriber_id'] = $s[1];
- $ret['docomo_fomacard_id'] = isset($s[2]) ? $s[2] : "";
- }
- $ret['docomo_imode_id'] = str_replace(" ", "", getRequestHeader('HTTP_X_DCMGUID'));
- }
- } else if (preg_match("/^KDDI-(.*)$/", $user_agent, $m)) {
- // au WAP2
- if (preg_match("/^(.*?) UP.Browser/", $m[1], $n)) {
- $ret['carrier'] = CARRIER_EZWEB;
- $ret['device'] = $n[1];
- $ret['au_subscriber_id'] = getRequestHeader('HTTP_X_UP_SUBNO');
- }
- } else if (preg_match("/^UP.Browser\/(.*?)-(.*?) UP\.Link\/(.*)$/", $user_agent, $m)) {
- // au WAP1
- $ret['carrier'] = CARRIER_EZWEB;
- $ret['device'] = $m[2];
- $ret['au_subscriber_id'] = getRequestHeader('HTTP_X_UP_SUBNO');
- } else if (preg_match("/^SoftBank\/(.*)$/", $user_agent, $m)) {
- // Softbank
- if (preg_match("/^(.*?)\/(.*?)\/(.*?)(\/(SN.*?))? /", $m[1], $n)) {
- $ret['carrier'] = CARRIER_SOFTBANK;
- $ret['device'] = $n[2];
- $ret['softbank_utn'] = isset($n[5]) ? $n[5] : "";
- $ret['jphone_id'] = getRequestHeader('HTTP_X_JPHONE_UID');
- }
- } else if (preg_match("/^Vodafone\/(.*)$/", $user_agent, $m)) {
- // Vodafone
- if (preg_match("/^(.*?)\/(.*?)\/(.*?)(\/(SN.*?))? /", $m[1], $n)) {
- $ret['carrier'] = CARRIER_SOFTBANK;
- $ret['device'] = $n[2];
- $ret['softbank_utn'] = isset($n[5]) ? $n[5] : "";
- $ret['jphone_id'] = getRequestHeader('HTTP_X_JPHONE_UID');
- }
- } else if (preg_match("/^J-PHONE\/(.*)$/", $user_agent, $m)) {
- // J-PHONE 1g/2g
- if (preg_match("/^(.*?)\/(.*?)(\/(SN.*?))? /", $m[1], $n)) {
- $ret['carrier'] = CARRIER_SOFTBANK;
- $ret['device'] = $n[2];
- $ret['softbank_utn'] = isset($n[4]) ? $n[4] : "";
- $ret['jphone_id'] = getRequestHeader('HTTP_X_JPHONE_UID');
- }
- } else if (preg_match("/^MOT-(V980|C980)(.*)/", $user_agent, $m)) {
- // Vodafone Motorola
- $ret['carrier'] = CARRIER_SOFTBANK;
- $ret['device'] = $m[1];
- }
- return $ret;
- }
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。