글에서 날씨 정보를 얻어오기 위해서 필요한 국가별 도시 정보를 가져오는 클래스입니다. 간단하긴 한데, 출력 데이터가 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에서 이동 됨]
그 부분 메쏘드는 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에서 이동 됨]