PHP

기상청 날씨 연동

먹세 2013. 4. 30. 17:13

PHP를 이용하여 xml로 된 기상청 데이터를 받아서 뿌려보자


<?php

function objectsIntoArray($arrObjData, $arrSkipIndices = array())

{

    $arrData = array();

    

    // if input is object, convert into array

    if (is_object($arrObjData)) {

        $arrObjData = get_object_vars($arrObjData);

    }

    

    if (is_array($arrObjData)) {

        foreach ($arrObjData as $index => $value) {

            if (is_object($value) || is_array($value)) {

                $value = objectsIntoArray($value, $arrSkipIndices); // recursive call

            }

            if (in_array($index, $arrSkipIndices)) {

                continue;

            }

            $arrData[$index] = $value;

        }

    }

    return $arrData;

}


$xmlUrl_W = "http://www.kma.go.kr/wid/queryDFS.jsp?gridx=56&gridy=92"; // 서해


$xmlStr_W = file_get_contents($xmlUrl_W); // 서해

$xmlObj_W = simplexml_load_string($xmlStr_W); // 서해

$arrXml_W = objectsIntoArray($xmlObj_W); // 서해


$tomorrow=11-($arrXml_W[body][data][0][hour]/3); //다음날 오전 9시기준


$wArray=Array("","맑음","구름조금","구름많음","흐림","비","눈/비","눈");

// 서해 현재날씨 알아보기

for($i=1;$i<(count($wArray)+1);$i++){

if($wArray[$i]==$arrXml_W[body][data][0][wfKor]){

$wNum_W=$i; // 서해 현재날씨

}

}

// 서해 내일날씨 알아보기

for($i=1;$i<(count($wArray)+1);$i++){

if($wArray[$i]==$arrXml_W[body][data][8][wfKor]){

$wNum_W2=$i; // 서해 내일날씨

}

}


?> 



<!--서해-->

<div id="Wweather">

<div class="day">

<!--오늘-->

<div class="W">

<div class="w_icon"><img src="images/w<?=$wNum_W?>.gif"></div>

<div class="per"><?=$arrXml_W[body][data][0][wfKor]?></div>

</div>

<div class="W">

<div class="tempA"><?=$arrXml_W[body][data][0][temp]?>℃</div>

<div class="tempB"><font style="font-size:12px;">강수확률</font>:</div>

<div class="tempC"><?=$arrXml_W[body][data][0][pop]?>%</div>

</div>

</div>

<div class="day">

<!--내일-->

<div class="W">

<div class="w_icon"><img src="images/w<?=$wNum_W2?>.gif"></div>

<div class="per"><?=$arrXml_W[body][data][$tomorrow][wfKor]?></div>

</div>

<div class="W">

<div class="tempA"><?=$arrXml_W[body][data][$tomorrow][temp]?>℃</div>

<div class="tempB"><font style="font-size:12px;">강수확률</font>:</div>

<div class="tempC"><?=$arrXml_W[body][data][$tomorrow][pop]?>%</div>

</div>

</div>

</div>



이런식으로 가공해서 사용하면 된다.




반응형