
날씨 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','서울')])?>





번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
38 | [PHP] 파파고 API | 관리자 | 4910 | 2021.01.29 16:33 |
37 |
[AWS] 아마존 개인화 amazon personalize-dg
![]() |
관리자 | 4434 | 2020.01.22 19:33 |
36 |
[PHP] 소녀나라 구인공고
![]() |
관리자 | 6765 | 2018.04.17 12:54 |
35 | [MYSQL] 게시판 페이징(?) 속도 향상 [1] | 관리자 | 15195 | 2014.08.13 02:18 |
34 | [MYSQL] 페이징 쿼리, 페이징 기법 | 관리자 | 26043 | 2014.08.13 01:48 |
33 | [MYSQL] 이메일 필터 정규식 | 관리자 | 11228 | 2014.07.25 11:32 |
32 | [PHP] Zen HTML Selectors | 관리자 | 9268 | 2014.03.12 17:16 |
31 | [PHP] zen coding~! 젠코딩 Zen HTML Elements | 관리자 | 11704 | 2014.03.12 17:16 |
30 | [PHP] 에디트 플러스 zen coding CSS | 관리자 | 10894 | 2014.03.12 17:16 |
29 | [PHP] php + jquery ajax + json | 관리자 | 8767 | 2014.03.04 15:30 |
28 | [PHP] php 엑셀 파일 생성시 한글깨짐 | 관리자 | 11806 | 2014.02.21 16:31 |
>> | [PHP] 날씨 API, 기상청 날씨 파싱 | 관리자 | 14359 | 2014.01.22 15:32 |
26 | [PHP] 도로명주소 | 관리자 | 9003 | 2014.01.09 11:39 |
25 | [MYSQL] MYSQL EXPLAIN | 관리자 | 9278 | 2013.10.28 12:10 |
24 | [PHP] PHP, AJAX, JSON 리턴 | 관리자 | 10412 | 2013.10.18 17:49 |
23 |
[MYSQL] mysql성능 향상
![]() |
관리자 | 7883 | 2013.10.07 12:52 |
22 | [MYSQL] mysql 최적화 | 관리자 | 8397 | 2013.10.07 12:35 |
21 | [PHP] PHP 변수 초기화 및 조건부 할당 | 관리자 | 9503 | 2013.09.25 00:57 |
20 | [PHP] 킴스큐 썸네일 사이즈 변경 | 관리자 | 7842 | 2013.07.16 14:14 |
19 |
[PHP] 간단하게 만드는 캐싱
![]() |
관리자 | 8837 | 2013.05.21 14:11 |