
날씨 API, 기상청 날씨 파싱
<?
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','서울')])?>





번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
26 | [PHP] 파파고 API | 관리자 | 1867 | 2021.01.29 16:33 |
25 |
[PHP] 소녀나라 구인공고
![]() |
관리자 | 3306 | 2018.04.17 12:54 |
24 | [PHP] Zen HTML Selectors | 관리자 | 5591 | 2014.03.12 17:16 |
23 | [PHP] zen coding~! 젠코딩 Zen HTML Elements | 관리자 | 7757 | 2014.03.12 17:16 |
22 | [PHP] 에디트 플러스 zen coding CSS | 관리자 | 7196 | 2014.03.12 17:16 |
21 | [PHP] php + jquery ajax + json | 관리자 | 5396 | 2014.03.04 15:30 |
20 | [PHP] php 엑셀 파일 생성시 한글깨짐 | 관리자 | 8474 | 2014.02.21 16:31 |
>> | [PHP] 날씨 API, 기상청 날씨 파싱 | 관리자 | 10452 | 2014.01.22 15:32 |
18 | [PHP] 도로명주소 | 관리자 | 5472 | 2014.01.09 11:39 |
17 | [PHP] PHP, AJAX, JSON 리턴 | 관리자 | 7155 | 2013.10.18 17:49 |
16 | [PHP] PHP 변수 초기화 및 조건부 할당 | 관리자 | 6225 | 2013.09.25 00:57 |
15 | [PHP] 킴스큐 썸네일 사이즈 변경 | 관리자 | 4604 | 2013.07.16 14:14 |
14 |
[PHP] 간단하게 만드는 캐싱
![]() |
관리자 | 5388 | 2013.05.21 14:11 |
13 | [PHP] 웹문서 긁어와서 저장 | 관리자 | 7009 | 2013.05.10 12:37 |
12 |
[PHP] 팝업방지 BHO
![]() |
관리자 | 7542 | 2013.02.28 14:54 |
11 | [PHP] 강제로 파일다운로드 되게 | 관리자 | 9221 | 2013.01.21 16:31 |
10 | [PHP] 리눅스 서버관리 | 관리자 | 3951 | 2013.01.21 15:14 |
9 | [PHP] SI, SM, ERP, EIP, EAI, CMMS, CRM, SCM, GW, KMS | 관리자 | 8241 | 2013.01.21 15:13 |
8 |
[PHP] eclipse 3.7 pdt php 셋팅방법
![]() |
관리자 | 6146 | 2013.01.21 15:12 |
7 |
[PHP] PHP 개발 보안가이드
![]() |
관리자 | 6992 | 2013.01.21 15:10 |