PHP & MySQL

날씨 API, 기상청 날씨 파싱

관리자 | 2014.01.22 15:32 | 조회 10904

<?
class KmaWeather
{
 //1시간단위로  기상대가  있는 지역의 날씨를 가져온다.
 function weather_xml_parser()
 {
  $array = array();
  $url1="www.kma.go.kr";
  $url2="GET /";
  $url2.="XML/weather/sfc_web_map.xml";
  $url2.=" HTTP/1.0\r\nHost:www.kma.go.kr\r\n\r\n";

  $fp2 = fsockopen ($url1, 80, $errno, $errstr,30 );
  if (!$fp2) echo "?   $errstr ($errno)<br />n";
  else
  {
   fputs ($fp2, $url2);
   while (!feof($fp2))
   {
    $line=fgets ($fp2,512);
  
    if(ereg("<local",$line))
    {
     $area=preg_split("/\>/",$line);
     $area=preg_split("/\</",$area[1]);
     $area =$this-> iconv_UTF_8($area[0]);
     
     $array[$area]=$this-> iconv_UTF_8($area[0]);//지역설정


     $value=preg_split("/\"/",$line);
     $array[$area]['icon']= $this-> iconv_UTF_8($value[3]); //아이콘 변수현재상태
     $array[$area]['desc']= $this-> iconv_UTF_8($value[5]); //현재상태 한글 / 맑음 흐림 구름많음 박무 구름조금
     $array[$area]['temp']=$this-> iconv_UTF_8($value[7]); //현재온도
    }
   }
  }
  fclose($fp2);
  return $array;
 }
 #
 //해당 좌표의 동네 날씨를  가져온다.   해당좌표는 기상청사이트=>  http://www.kma.go.kr/weather/lifenindustry/sevice_rss.jsp  가서 확인해 보시면 됩니다.
 function area_weather_xml_parser($x,$y)

 {
  $array = array();
  $url1="www.kma.go.kr";
  $url2="GET /";
  $url2.="wid/queryDFS.jsp?gridx=".$x."&gridy=".$y;
  $url2.=" HTTP/1.0\r\nHost:www.kma.go.kr\r\n\r\n";

 

  $fp2 = fsockopen ($url1, 80, $errno, $errstr,30 );

  if (!$fp2) echo "?   $errstr ($errno)<br />n";

  else

  {

   fputs ($fp2, $url2);

   $i = 0; $j=0;

   while (!feof($fp2))

   {

    $line=fgets ($fp2,512);

    if(ereg("<tm>",$line))$array[date]= $this->iconv_UTF_8(trim(strip_tags($line)));

    if($i==$j++ && ereg("<data",$line))

    {

     $area=preg_split("/\"/",$line);

     $area=preg_split("/\"/",$area[1]);

     $number = iconv_UTF_8($area[0]);// iconv('UTF-8','EUC-KR',$area[0]);

 


     $array[$i]= $number;

    }

 


    if(ereg("<hour>",$line))$array[$i]['hour']=$this-> iconv_UTF_8(trim(strip_tags($line))); //시간 18일 경우  15~18시

    if(ereg("<day>",$line))$array[$i]['day']= $this->iconv_UTF_8(trim(strip_tags($line)));  //0:오늘 1:내일 2:모레

    if(ereg("<temp>",$line))$array[$i]['temp']=$this-> iconv_UTF_8(trim(strip_tags($line))); //현재시간온도

    if(ereg("<pty>",$line))$array[$i]['pty']=$this-> iconv_UTF_8(trim(strip_tags($line))); //강수상태코드  0:없음  1:비  2: 비/눈  3: 눈/비  4:눈

    if(ereg("<wfKor>",$line))$array[$i]['wfkor']=$this-> iconv_UTF_8(trim(strip_tags($line))); //날씨한국어  1:맑음 2:구름조금 3:구름많음 4:흐림 5:비 6:눈/비  7:눈

    if(ereg("<wfEn>",$line))$array[$i]['wfen']=$this-> iconv_UTF_8(trim(strip_tags($line))); //날씨영어  1:Clearly 2:Little Cloudy 3:Mostly Cloudy 4:Cloudy 5:Rainy 6:Snow/Rain  7:Snow

    if(ereg("<pop>",$line))$array[$i]['pop']= $this->iconv_UTF_8(trim(strip_tags($line))); //강수확률%

    //바람인 강수확률은 제외 필요하신분은 기상청에서 제공하는 pdf파일 참조해서 추가하세요

    if(ereg("</data>",$line))$i++;

   }

  }

  fclose($fp2);

 


  return $array;

 }

 


 function iconv_UTF_8($str)

 {

   return iconv('UTF-8','EUC-KR',$str);

 }

}

 


$obj = new KmaWeather;

 


//테스트용 코드   $obj->area_weather_xml_parser('69','106')  //한번 찍어보시고 취향에 맞게 변경해서 사용하시면 되겠지여 

 $w_ary = $obj->weather_xml_parser();
?>
<?print_r($w_ary[iconv('UTF-8','EUC-KR','서울')])?>

twitter facebook me2day 요즘
26개(1/2페이지)
PHP & MySQL
번호 제목 글쓴이 조회 날짜
26 [PHP] 파파고 API 관리자 2137 2021.01.29 16:33
25 [PHP] 소녀나라 구인공고 사진 관리자 3619 2018.04.17 12:54
24 [PHP] Zen HTML Selectors 관리자 5872 2014.03.12 17:16
23 [PHP] zen coding~! 젠코딩 Zen HTML Elements 관리자 8072 2014.03.12 17:16
22 [PHP] 에디트 플러스 zen coding CSS 관리자 7528 2014.03.12 17:16
21 [PHP] php + jquery ajax + json 관리자 5666 2014.03.04 15:30
20 [PHP] php 엑셀 파일 생성시 한글깨짐 관리자 8766 2014.02.21 16:31
>> [PHP] 날씨 API, 기상청 날씨 파싱 관리자 10905 2014.01.22 15:32
18 [PHP] 도로명주소 관리자 5763 2014.01.09 11:39
17 [PHP] PHP, AJAX, JSON 리턴 관리자 7421 2013.10.18 17:49
16 [PHP] PHP 변수 초기화 및 조건부 할당 관리자 6493 2013.09.25 00:57
15 [PHP] 킴스큐 썸네일 사이즈 변경 관리자 4840 2013.07.16 14:14
14 [PHP] 간단하게 만드는 캐싱 사진 관리자 5671 2013.05.21 14:11
13 [PHP] 웹문서 긁어와서 저장 관리자 7246 2013.05.10 12:37
12 [PHP] 팝업방지 BHO 사진 관리자 9085 2013.02.28 14:54
11 [PHP] 강제로 파일다운로드 되게 관리자 9483 2013.01.21 16:31
10 [PHP] 리눅스 서버관리 관리자 4167 2013.01.21 15:14
9 [PHP] SI, SM, ERP, EIP, EAI, CMMS, CRM, SCM, GW, KMS 관리자 8814 2013.01.21 15:13
8 [PHP] eclipse 3.7 pdt php 셋팅방법 첨부파일 관리자 6345 2013.01.21 15:12
7 [PHP] PHP 개발 보안가이드 첨부파일 관리자 7222 2013.01.21 15:10
많이 본 글
댓글 많은 글