2010年12月16日

jQuery:XMLの要素が同名で属性から値を取得する

下記のようなXMLの値を取得する場合Fruitの中から該当するtypeを探し、そのvalueを取得するようにする。

[XML]

<Fruit type="Data">
 <Fruit type="Item" name="果物">
  <Fruit type="Apple" name="りんご名" value="赤玉"/>
  <Fruit type="Pears" name="梨名" value="二十世紀"/>
 </Fruit >
</Fruit >


[取得方法]

$(xml).find("Fruit").each(function()
{
 if($(this).attr('type') == 'Apple')
 {
  alert($(this).attr('value'));
 }
});

[出力結果]
赤玉

2010年10月12日

PHP:携帯機種判別 auの場合

ユーザエージェントから携帯の機種を判別る方法。

[使用方法]

$kishu = getmobilename($_SERVER['HTTP_USER_AGENT']);


[内容]

/* 機種名取得 */
function getmobilename($uagent){
    //au deviceID -> 機種名�
    $auarray = array("TS35" => "neon","TS34" => "W41T","SA36" => "W41SA","KC35" => "W41K","HI36" => "W41H"
        ,"SN34" => "W41S","CA33" => "W41CA","HI34" => "PENCK","SA35" => "W33SA","TS33" => "W32T"
        ,"SA34" => "W32SA","KC34" => "W32K","HI35" => "W32H","SN35" => "W32S(Suica対応)"
        ,"SN33" => "W32S","CA32" => "W31CA","TS32" => "W31T","SN32" => "W31S","KC33" => "W31K"
        ,"SA33" => "W31SA","SA32" => "W22SA","HI33" => "W22H","CA31" => "W21CA/Ⅱ","SA31" => "W21SA"
        ,"TS31" => "W21T","SN31" => "W21S","KC32" => "W21K","HI32" => "W21H","KC31" => "W11K"
        ,"HI31" => "W11H","ST29" => "Sweets pure","CA28" => "G'z ONE TYPE-R","ST26" => "Sweets"
        ,"ST25" => "talby","ST2A" => "A5520SA","ST28" => "A5518SA"
        ,"ST22" => "INFOBAR","TS2C" => "A5517T","TS2B" => "A5516T","KC27" => "A5515K"
        ,"ST27" => "A5514SA","CA27" => "A5512CA","TS2A" => "A5511T","TS29" => "A5509T"
        ,"ST24" => "A5507SA","TS28" => "A5506T","SA27" => "A5505SA","TS27" => "A5504T"
        ,"SA26" => "A5503SA","KC24" => "A5502K","KC25" => "A5502K","TS26" => "A5501T"
        ,"CA26" => "A5407CA","CA25" => "A5406CA","ST23" => "A5405SA","SN25" => "A5404S"
        ,"CA24" => "A5403CA","SN24" => "A5402S","CA23" => "A5401CA","ST21" => "A5306ST"
        ,"KC22" => "A5305K","TS24" => "A5304T","HI24" => "A5303H II","HI23" => "A5303H"
        ,"CA22" => "A5302CA","TS23" => "A5301T","TS21" => "C5001T","PT21" => "A1405PT"
        ,"SN29" => "A1404S","KC26" => "A1403K","SN27" => "A1402SⅡ","SN28" => "A1402SⅡカメラ無し"
        ,"SN26" => "A1402S","KC23" => "A1401K","SA28" => "A1305SA","TS25" => "A1304T"
        ,"SA25" => "A1303SA","SA24" => "A1302SA","SN23" => "A1301S","SN22" => "A1101S"
        ,"SA22" => "A3015SA","SN21" => "A3014S","TS22" => "A3013T","CA21" => "A3012CA"
        ,"SA21" => "A3011SA","MA21" => "C3003P","KC21" => "C3002K","HI21" => "C3001H"
        ,"ST14" => "A1014ST","KC15" => "A1013K","KC14" => "A1012K","ST13" => "A1011ST"
        ,"SN17" => "C1002S","SY15" => "C1001SA","CA14" => "C452CA","HI14" => "C451H"
        ,"TS14" => "C415T","KC13" => "C414K","SN15" => "C413S","SN16" => "C413S"
        ,"SY14" => "C412SA","ST12" => "C411ST","TS13" => "C410T","CA13" => "C409CA"
        ,"MA13" => "C408P","HI13" => "C407H","SN13" => "C406S","SY13" => "C405SA"
        ,"SN12" => "C404S","SN14" => "C404S","ST11" => "C403ST","DN11" => "C402DE"
        ,"SY12" => "C401SA","KC12" => "C313K","CA12" => "C311CA","TS12" => "C310T"
        ,"HI12" => "C309H","MA11" => "C308P","MA12" => "C308P","KC11" => "C307K"
        ,"SN11" => "C305S","SY11" => "C304SA","CA11" => "C303CA","HI11" => "C302H"
        ,"TS11" => "C301T","DN01" => "C202DE","HI01" => "C201H","HI02" => "C201H"
        ,"TST9" => "TT51","KCU1" => "TK41","SYT5" => "TS41","KCTD" => "TK40"
        ,"TST8" => "TT32","TST7" => "TT31","KCTC" => "TK31","SYT4" => "TS31"
        ,"KCTB" => "TK23","KCTA" => "TK22","TST6" => "TT22","KCT9" => "TK21"
        ,"TST5" => "TT21","TST4" => "TT11","KCT8" => "TK12","SYT3" => "TS11"
        ,"KCT7" => "TK11","MIT1" => "TD11","MAT3" => "TP11","KCT6" => "TK05"
        ,"TST3" => "TT03","KCT5" => "TK04","KCT4" => "TK03","SYT2" => "TS02"
        ,"MAT1" => "TP01","MAT2" => "TP01","TST2" => "TT02","KCT3" => "TK0K"
        ,"KCT2" => "TK02","KCT1" => "TK01","TST1" => "TT01","SYT1" => "TS01"
    );
   

    $career = getMobileCareer();
   
    $kishu = 0;
    // auXHTML機種判別
    if($career == 2){
        if(preg_match("/[KDDI-]([0-9A-Z]{4})/",$uagent,$match)){
            $device = $match[1];
           
            foreach($auarray as $key => $value){
                if($key == $device){
                    $kishu = $value;
                }
            }

            if($kishu == ""){
                $kishu = "KDDI-".$device;
            }
        }
        // auHDML,Tu-Ka機種判別
        elseif(preg_match("/^UP\.Browser.*-([0-9A-Z]){4}/",$uagent,$match)){
            $device = $match[1];
           
            foreach($auarray as $key => $value){
                if($key == $device){
                    $kishu = $value;
                }
            }
           
            if($kishu == ""){
                $kishu = $device;
            }
        }
    }
    return $kishu;
}


/*
* モバイル端末のUAからキャリア判別する
*/
function getMobileCareer()
{
    if ($ua = @$_SERVER['HTTP_USER_AGENT'])
    {
        $val = 0;
   
        //docomoチェック
        $check_strs = array
        (
            'DoCoMo',
        );
        foreach ($check_strs as $check_str)
        {
            if (stripos($ua, $check_str) !== false)
            {
                $val = 1;
                return $val;
            }
        }
       
        $check_strs = array
        (
            'KDDI',
            'UP.Browser',
        );
        foreach ($check_strs as $check_str)
        {
            if (stripos($ua, $check_str) !== false)
            {
                $val = 2;
                return $val;
            }
        }
       
        $check_strs = array
        (
            'SoftBank',
            'Vodafone',
            'J-PHONE',
            'MOT-',
            'DDIPOKET',
            'WILLCOM',
            'PDXGW',
            'ASTEL',
            'Nokia',
            'L-mode',
            'J-EMULATOR',
        );
        foreach ($check_strs as $check_str)
        {
            if (stripos($ua, $check_str) !== false)
            {
                $val = 3;
                return $val;
            }
        }
    }
    return null;
}

※ざっくり作ったので動かなかったらすみません。
2010年10月04日

PHP:ホスト名を取得する

PHPでホスト名を取得するには。

echo php_uname("n");

これでいけるかな。
2010年09月20日

外部のIPを使用する際の注意点

Open VPNで外部のIPを使用する際にIPが変わらない場合。

Windowsのユーザー・アカウント制御(UAC)を一時的に無効にする必要があります。

設定方法

[ユーザー アカウントと家族のための安全設定]-[ユーザー アカウント]-[ユーザー アカウント制御の有効化または無効化]

「ユーザアカウント制御(UAC)を使ってコンピュータの保護に役立たせる」のチェックをはずす

これで、パソコンを再起動するとIPが変更されるようになります。
2010年09月10日

mysql:DISTINCT、重複した行をまとめる。

あるカラムのレコードが重複した場合、まとめて一つの行にする。

DISTINCT

テーブル名:foods
userid、name、food
1、佐藤、バナナ
2、田中、りんご
1、佐藤、パイナップル
3、近藤、ブドウ

SELECT DISTINCT userid FROM foods;

結果
userid
1
2
3