2011. 9. 29. 19:12

도시코드 알아오기




글에서 날씨 정보를 얻어오기 위해서 필요한 국가별 도시 정보를 가져오는 클래스입니다. 간단하긴 한데, 출력 데이터가 validate 되지 않은 JSON이라서 그거 수정하는데 30분 정도 걸렸네요.(미워요 구글~~) 

그 부분 메쏘드는 convertJson(한줄짜리 -_-;) 이구요, 나머지는 쉬우니까 패스~~ 

소스 들어갑니다. 

<?php 
$iso = 'KR'; 
$City = new CompanyCity($iso); 
print_r($City->get()); 

class CompanyCity { 
    const KOURL = 'http://www.google.co.kr/ig/cities?country='; 
    const ENURL = 'http://www.google.com/ig/cities?country='; 
    const UTF8 = '&oe=UTF-8'; 
    
    private $country; 
    private $city; 
    private $type = 'array';    // OR object 
    
    public function __construct($iso3166) 
    { 
        $this->country = $iso3166; 
    } 
    
    private static function convertJson($v) 
    { 
        return preg_replace('/(cities|name|lat|lon|code|selected|true)/', "\""."\\1"."\"", $v); 
    } 
    
    public function get() 
    { 
        $this->city = file_get_contents(self::KOURL.$this->country.self::UTF8); 
        return $this->type=='array' ? json_decode(self::convertJson($this->city), true) : json_decode(self::convertJson($this->city)); 
    } 

?> 

입력할 때 ISO-3166-1-alpha-2 에 맞는 코드를 입력해야 출력이 제대로 나옵니다. 
[이 게시물은 최고관리자님에 의해 2010-02-11 03:18:53 B16에서 이동 됨]