PHP & MySQL

날씨 API, 기상청 날씨 파싱

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

<?
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 요즘
36개(1/2페이지)
PHP & MySQL
번호 제목 글쓴이 조회 날짜
36 [PHP] 소녀나라 구인공고 사진 관리자 391 2018.04.17 12:54
35 [MYSQL] 게시판 페이징(?) 속도 향상 [1] 관리자 7122 2014.08.13 02:18
34 [MYSQL] 페이징 쿼리, 페이징 기법 관리자 13405 2014.08.13 01:48
33 [MYSQL] 이메일 필터 정규식 관리자 4707 2014.07.25 11:32
32 [PHP] Zen HTML Selectors 관리자 3696 2014.03.12 17:16
31 [PHP] zen coding~! 젠코딩 Zen HTML Elements 관리자 4406 2014.03.12 17:16
30 [PHP] 에디트 플러스 zen coding CSS 관리자 4522 2014.03.12 17:16
29 [PHP] php + jquery ajax + json 관리자 3641 2014.03.04 15:30
28 [PHP] php 엑셀 파일 생성시 한글깨짐 관리자 5480 2014.02.21 16:31
>> [PHP] 날씨 API, 기상청 날씨 파싱 관리자 6731 2014.01.22 15:32
26 [PHP] 도로명주소 관리자 3600 2014.01.09 11:39
25 [MYSQL] MYSQL EXPLAIN 관리자 3445 2013.10.28 12:10
24 [PHP] PHP, AJAX, JSON 리턴 관리자 5055 2013.10.18 17:49
23 [MYSQL] mysql성능 향상 첨부파일 관리자 2580 2013.10.07 12:52
22 [MYSQL] mysql 최적화 관리자 2642 2013.10.07 12:35
21 [PHP] PHP 변수 초기화 및 조건부 할당 관리자 3988 2013.09.25 00:57
20 [PHP] 킴스큐 썸네일 사이즈 변경 관리자 2903 2013.07.16 14:14
19 [PHP] 간단하게 만드는 캐싱 사진 관리자 3323 2013.05.21 14:11
18 [MYSQL] semi join으로 인한 비효율을 제거. 관리자 3388 2013.05.15 12:14
17 [PHP] 웹문서 긁어와서 저장 관리자 3980 2013.05.10 12:37
많이 본 글
댓글 많은 글