
날씨 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','서울')])?>
댓글 0개
| 엮인글 0개
| 번호 | 제목 | 글쓴이 | 조회 | 날짜 |
|---|---|---|---|---|
| 26 | [PHP] 파파고 API | 관리자 | 5409 | 2021.01.29 16:33 |
| 25 |
[PHP] 소녀나라 구인공고
|
관리자 | 7463 | 2018.04.17 12:54 |
| 24 | [PHP] Zen HTML Selectors | 관리자 | 9534 | 2014.03.12 17:16 |
| 23 | [PHP] zen coding~! 젠코딩 Zen HTML Elements | 관리자 | 12203 | 2014.03.12 17:16 |
| 22 | [PHP] 에디트 플러스 zen coding CSS | 관리자 | 11213 | 2014.03.12 17:16 |
| 21 | [PHP] php + jquery ajax + json | 관리자 | 9013 | 2014.03.04 15:30 |
| 20 | [PHP] php 엑셀 파일 생성시 한글깨짐 | 관리자 | 12173 | 2014.02.21 16:31 |
| >> | [PHP] 날씨 API, 기상청 날씨 파싱 | 관리자 | 14699 | 2014.01.22 15:32 |
| 18 | [PHP] 도로명주소 | 관리자 | 9458 | 2014.01.09 11:39 |
| 17 | [PHP] PHP, AJAX, JSON 리턴 | 관리자 | 10800 | 2013.10.18 17:49 |
| 16 | [PHP] PHP 변수 초기화 및 조건부 할당 | 관리자 | 9810 | 2013.09.25 00:57 |
| 15 | [PHP] 킴스큐 썸네일 사이즈 변경 | 관리자 | 8206 | 2013.07.16 14:14 |
| 14 |
[PHP] 간단하게 만드는 캐싱
|
관리자 | 9345 | 2013.05.21 14:11 |
| 13 | [PHP] 웹문서 긁어와서 저장 | 관리자 | 9727 | 2013.05.10 12:37 |
| 12 |
[PHP] 팝업방지 BHO
|
관리자 | 12501 | 2013.02.28 14:54 |
| 11 | [PHP] 강제로 파일다운로드 되게 | 관리자 | 12050 | 2013.01.21 16:31 |
| 10 | [PHP] 리눅스 서버관리 | 관리자 | 6613 | 2013.01.21 15:14 |
| 9 | [PHP] SI, SM, ERP, EIP, EAI, CMMS, CRM, SCM, GW, KMS | 관리자 | 10957 | 2013.01.21 15:13 |
| 8 |
[PHP] eclipse 3.7 pdt php 셋팅방법
|
관리자 | 8580 | 2013.01.21 15:12 |
| 7 |
[PHP] PHP 개발 보안가이드
|
관리자 | 9351 | 2013.01.21 15:10 |
신고
인쇄
스크랩






