Postcodify 매뉴얼

서버측 클래스 매뉴얼

개요

직접 검색서버를 구축하신 경우에는 jQuery 플러그인을 사용하지 않고도 쉘 또는 PHP 클래스로 검색을 수행하고 그 결과를 다른 프로그램과 쉽게 연동할 수 있습니다.

서버 API를 사용하시려면 일단 MySQL 또는 SQLite DB를 구축한 후, api 폴더 내의 config-example.php 파일을 config.php로 복사하여 DB 접속 정보를 입력하시기 바랍니다.

서버 API를 구동하려면 PHP 5.2 이상, mbstring 모듈, MySQL 5.1 이상 또는 SQLite 3.6 이상이 필요합니다. (그 이하의 버전에서도 실행이 가능할 수 있으나, 성능 및 호환성을 보장할 수 없습니다.) MySQL에 연결하는 방식은 pdo, mysqli, mysql 모듈을 모두 지원하며, 서버 환경에 따라 자동으로 선택합니다. SQLite를 사용하려면 pdo 모듈이 필요합니다. sqlite, sqlite3 모듈은 지원하지 않습니다.

쉘에서 호출

search.php를 쉘에서 호출하면 JSON 포맷으로 검색 결과를 출력합니다. 쉘 명령을 수행하고 JSON을 해석하는 기능만 있다면 C, C++, Java, Perl, Python, Ruby, Go, C#, Visual Basic, node.js 등 어떤 언어로 작성된 프로그램이라도 Postcodify를 활용할 수 있습니다.

PHP 5.4 이상에서는 아래의 예제처럼 사람이 보기 쉬운 형태로 줄을 바꾸고 한글을 그대로 출력합니다. PHP 5.3 이하에서는 줄바꿈을 하지 않고, 한글을 \uac00과 같은 형태로 인코딩합니다. 정상적인 JSON 디코더라면 두 가지 형태를 모두 소화할 수 있습니다.

user@hostname:~$ php search.php "세종대로 110"
{
    "version": "3.0.0",
    "error": "",
    "msg": "",
    "count": 1,
    "time": "0.009",
    "lang": "KO",
    "sort": "JUSO",
    "type": "JUSO+NUMS",
    "nums": "110",
    "cache": "MISS",
    "results": [
        {
            "postcode6": "100744",
            "postcode5": "04524",
            "ko_common": "서울특별시 중구",
            "ko_doro": "세종대로 110",
            "ko_jibeon": "태평로1가 31",
            "en_common": "Jung-gu, Seoul",
            "en_doro": "110, Sejong-daero",
            "en_jibeon": "31, Taepyeongno 1-ga",
            "building_id": "1114010300100310000019224",
            "building_name": "",
            "building_nums": "",
            "other_addresses": "명동; 서울시청; 서울특별시청; 신관동",
            "road_id": "111402005001",
            "internal_id": "221655"
        }
    ]
}

PHP에서 호출

검색 결과를 출력하지 않고 다른 PHP 어플리케이션에서 직접 사용하실 수도 있습니다.

include 'lib/autoload.php';
$postcodify = new Postcodify_Server;
$postcodify->db_driver = 'DB드라이버';
$postcodify->db_dbname = 'DB명';
$postcodify->db_host = 'DB호스트';
$postcodify->db_port = 'DB포트';
$postcodify->db_user = '아이디';
$postcodify->db_pass = '암호';
Postcodify::dbconfig($host, $port, $user, $pass, $dbname, $driver);
$results = $postcodify->search('검색 키워드 123-4');

EUC-KR (CP949) 환경에서 검색하려면 아래와 같이 문자셋을 지정해 주십시오.

$results = $postcodify->search('검색 키워드 123-4', 'CP949');

DB 정보 입력은 아래와 같이 하시면 됩니다.

  • DB 드라이버는 mysql 또는 sqlite로 설정해 주십시오.
  • SQLite 사용시 $dbname에 파일명을 입력하고, 호스트·포트·아이디·비밀번호는 모두 null로 하십시오.