首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从GeoLite2获取isoCode?

如何从GeoLite2获取isoCode?
EN

Stack Overflow用户
提问于 2017-01-16 05:28:10
回答 2查看 856关注 0票数 0

我已经安装了一个来自MaxMind的GeoLite2和测试php文件:

代码语言:javascript
复制
<?php
require_once 'vendor/autoload.php';

use MaxMind\Db\Reader;
$ipAddress = '8.8.8.8';
$databaseFile = './GeoLite2-Country.mmdb';

$reader = new Reader($databaseFile);

print_r($reader->get($ipAddress));

$reader->close();

给出了以下结果:

代码语言:javascript
复制
Array ( [continent] => Array ( [code] => NA [geoname_id] => 6255149 [names] => Array ( [de] => Nordamerika [en] => North America [es] => Norteamérica [fr] => Amérique du Nord [ja] => 北アメリカ [pt-BR] => América do Norte [ru] => Ð¡ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ðмерика [zh-CN] => 北美洲 ) ) [country] => Array ( [geoname_id] => 6252001 [iso_code] => US [names] => Array ( [de] => USA [en] => United States [es] => Estados Unidos [fr] => États-Unis [ja] => アメリカåˆè¡†å›½ [pt-BR] => Estados Unidos [ru] => СШР[zh-CN] => 美国 ) ) [registered_country] => Array ( [geoname_id] => 6252001 [iso_code] => US [names] => Array ( [de] => USA [en] => United States [es] => Estados Unidos [fr] => États-Unis [ja] => アメリカåˆè¡†å›½ [pt-BR] => Estados Unidos [ru] => СШР[zh-CN] => 美国 ) ) ) 

我需要的是isoCode (在这个例子中是US),有谁知道如何从GeoLite2中只获取"US“而不是整个数组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-16 06:57:17

这就是MaxMind's database reader的设计方式;它总是为每次查找返回完整的记录。

您可以通过直接访问返回数组的元素来获取您感兴趣的特定信息:

代码语言:javascript
复制
// Fetch the database record for this IP address
$record = $reader->get($ipAddress);

// Output just the ISO country code ("US", in this case)
echo $record['country']['iso_code'] . PHP_EOL;
票数 2
EN

Stack Overflow用户

发布于 2017-01-16 06:57:28

修改您的示例:

代码语言:javascript
复制
<?php
require_once 'vendor/autoload.php';

use MaxMind\Db\Reader;
$ipAddress = '8.8.8.8';
$databaseFile = './GeoLite2-Country.mmdb';

$reader = new Reader($databaseFile);

$record = $reader->get($ipAddress);

print($record['country']['iso_code']);

$reader->close();

或者使用GeoIp2 API

代码语言:javascript
复制
<?php
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;


$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb');


$record = $reader->city('8.8.8.8');
print($record->country->isoCode); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41666522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档