phpツールクラスの【ip対応地域アドレスクラスへ変換】
2015 ワード
**
* ip
* @version 1.0 2012-12-20
*/
class ip2Area{
protected $errors = array();
protected $service = 'api.ipinfodb.com';
protected $version = '***';
protected $apiKey = '*******';
public function __construct(){}
public function __destruct(){}
public function setKey($key){
if(!empty($key)){
$this->apiKey = $key;
}
}
public function getError(){
return implode("
", $this->errors);
}
public function getCountry($host){
return $this->getResult($host, 'ip-country');
}
public function getCity($host){
return $this->getResult($host, 'ip-city');
}
private function getResult($host, $name){
$ip = @gethostbyname($host);
if(preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $ip)){
$xml = @file_get_contents('http://' . $this->service . '/' . $this->version . '/' . $name . '/?key=' . $this->apiKey . '&ip=' . $ip . '&format=xml');
try{
$response = @new SimpleXMLElement($xml);
foreach($response as $field=>$value){
$result[(string)$field] = (string)$value;
}
return $result;
}
catch(Exception $e){
$this->errors[] = $e->getMessage();
return;
}
}
$this->errors[] = '"' . $host . '" is not a valid IP address or hostname.';
return;
}
}