직접 검색서버를 구축하신 경우에는 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 어플리케이션에서 직접 사용하실 수도 있습니다.
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 정보 입력은 아래와 같이 하시면 됩니다.
mysql
또는 sqlite
로 설정해 주십시오.$dbname
에 파일명을 입력하고, 호스트·포트·아이디·비밀번호는 모두 null
로 하십시오.