YiluPHP
这家伙很懒,什么都没有留下...

经验 GeoIP2-php 根据IP查国家和城市,多语言

2019年6月11日 浏览数 154296


GeoLite2-City.mmdb 数据库的下载可以在网上搜索到,下载后保存到自己的网盘里,方便重复使用。

这个数据库的特点是支持多个国家的语言,但是中国内的IP大多精确到省级,极少城市级,我试了一个香港的IP,返回了西安的地点
以下是支持的语言
      ["de"]=>
      string(5) "China"
      ["en"]=>
      string(5) "China"
      ["es"]=>
      string(5) "China"
      ["fr"]=>
      string(5) "Chine"
      ["ja"]=>
      string(6) "中国"
      ["pt-BR"]=>
      string(5) "China"
      ["ru"]=>
      string(10) "Китай"
      ["zh-CN"]=>
      string(6) "中国"



代码示例

use GeoIp2\Database\Reader;

// $ip = '39.134.164.243'; //吉林、白城
// $ip = '14.121.170.23'; //深圳市
$ip = '128.101.101.101'; //美国
$db = 'vendor/geoip2/geoip2/src/Database/GeoLite2-City.mmdb';
$reader = new Reader($db);
$record = $reader->city($ip);

var_dump( get_class_methods($record) , $record->jsonSerialize() );

print($record->country->isoCode . "\n"); // 'US'
print($record->country->name . "\n"); // 'United States'
print($record->country->names['zh-CN'] . "\n"); // '美国'

print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'

print($record->city->name . "\n"); // 'Minneapolis'

print($record->postal->code . "\n"); // '55455'

print($record->location->latitude . "\n"); // 44.9733
print($record->location->longitude . "\n"); // -93.2323


评论(0
还没有人评论哦
我来说说