Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

[PHP] openapi를 이용한 도로명 주소 검색 예제

2014-02-14 by 편리

오픈소스 검색엔진을 사용해서 도로명 주소 검색 시스템을 개발해 서비스하고 있지만 최근에 openapi를 이용해서 도로명 주소 검색 서비스를 제공하는 경우가 있어 어떤 것인가 싶은 생각에 인증키 신청하고 테스트를 진행해봤는데.. 이건 사용할 게 아닌 것 같다는 생각이 들었다. 일단 검색이 너무 불편해서.. 강남대로37길 24 등과 같이 주소를 정확하게 입력해야만 검색이 되기 때문에 검색엔진에서 검색하듯 주소를 검색하면 욕먹기 딱 좋을 것 같았다. 그래서 결국은 테스트만 하고 끝냈는데.. 그래도 php용으로는 샘플코드를 제공하지 않아서 다른 분들께 도움이 될까 싶어 테스트 때 작성했던 코드를 공개한다.

<?php
include_once('./_common.php');

$serviceKey = 'abcd';
$charset = 'utf-8';

$searchSe = $_POST['searchSe'];
$srchwrd = urlencode($_POST['srchwrd']);

$url = 'http://openapi.epost.go.kr/postal/retrieveNewAdressService/retrieveNewAdressService/getNewAddressList?searchSe='.$searchSe.'&srchwrd='.$srchwrd.'&encoding='.$charset.'&serviceKey='.$serviceKey;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$output = curl_exec($ch);
$errno = curl_errno($ch);
if ($errno > 0) {
    if ($errno === 28) {
        echo "Connection timed out.";
    }
    else {
        echo "Error #" . $errno . ": " . curl_error($ch);
    }
}
else {
    $xml = new SimpleXmlElement($output);
    $count = count($xml->newAddressList);
    for($i=0; $i<$count; $i++) {
        $data = $xml->newAddressList[$i];

        $zipcode = $data->zipNo;
        $zip = explode('-', $zipcode);
        $zip1 = $zip[0];
        $zip2 = $zip[1];

        $address = $data->lnmAdres;
        preg_match('/^([^\(]+)/', $address, $m);

        $addr1 = trim($m[1]);
        $addr3 = trim(str_replace($m[1], '', $address));
        $addr_ji = trim($data->rnAdres);

        if($i == 0)
            echo '<ul>'.PHP_EOL;
        echo '<li>'.PHP_EOL;
        echo '<span></span>';
        echo '<a href="#" onclick="put_data(\''.$zip1.'\', \''.$zip2.'\', \''.trim($addr1).'\', \''.trim($addr3).'\', \''.$addr_ji.'\'); return false;">';
        echo '<strong>'.$zipcode.'</strong>';
        echo ' '.$addr1;
        echo ' '.$addr3;
        echo '</a>';
        echo '<div>(지번주소) '.$addr_ji.'</div>';
        echo '</li>'.PHP_EOL;
    }

        if($i > 0)
            echo '</ul>';
        else
            echo '<div class="result_msg result_fail">검색결과가 없습니다.</div>';
}
curl_close($ch);
?>

인증키($serviceKey)는 http://data.go.kr 에 회원가입 후 오픈API 중 도로명주소조회서비스의 인증키를 신청하신 후 발급 받아서 설정하면 된다. 그리고 조회 요청때 php의 curl을 사용하기 때문에 curl을 사용할 수 있는 환경이어야 사용할 수 있다. 완전하게 정리된 코드가 아니고 테스트용으로 작성된 코드라는 점을 감안하고 사용하면 될 듯 하다.

Post navigation

Previous Post:

그냥 자야겠다

Next Post:

AMD RADEON R7 260x로 VGA 교체

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅
  • 우분투 시스템 터미널쉘 zsh 로 변경

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes