Maxmind的GeoLite2大陆代码



我正在使用MaxMind的免费GeoLite2数据库。
根据他们的代码,我可以得到该国的ISO代码。
print($record->country->isoCode . "n"); // 'US'
但是我如何获得大陆代码? 我更具体地寻找欧盟检测。

EU

欧盟(欧盟(国家名单是:

  • 奥地利 AT
  • 公司
  • 比利时, 比利时
  • BG, 保加利亚
  • CR, 克罗地亚
  • 塞浦路斯共和国
  • 捷克, 捷克共和国
  • 丹麦, 丹麦
  • EE, 爱沙尼亚
  • FI, 芬兰
  • 法国, 法国
  • 德国, 德国
  • 希腊 GR
  • HU, 匈牙利
  • IE, 爱尔兰
  • 意大利, 意大利
  • LV, 拉脱维亚
  • LI, 立陶宛
  • LU, 卢森堡
  • MT, 马耳他
  • 荷兰, 荷兰
  • 波兰
  • 葡萄牙
  • 罗马尼亚 RO
  • SK, 斯洛伐克
  • SI, 斯洛文尼亚
  • SP, 西班牙
  • 瑞典东南
  • GB, 英国

我使用的示例:

if (isset($_SERVER['GEOIP_COUNTRY_CODE'])) {
$cc=$_SERVER['GEOIP_COUNTRY_CODE'];
} else {
$cc='??';
}
$eu=array('AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'SP', 'SE', 'GB');
if (in_array($cc,$eu)) {
//inside EU
} else {
//outside EU
}

欧洲经济区

根据您要执行的操作(考虑到这是在GDPR可执行后提出的(,您可能需要测试EEA(欧洲经济区(。

欧洲经济区是:

  • 所有欧盟成员国
  • 否, 挪威
  • IS, 冰岛
  • LI, 列支敦士登

这是我与完整地理IP一起使用的:

if (isset($_SERVER['GEOIP_COUNTRY_CODE'])) {
$cc=$_SERVER['GEOIP_COUNTRY_CODE'];
} else {
$cc='??';
}
$eea=array('AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'SP', 'SE', 'GB', 'NO', 'IS', 'LI');
if (in_array($cc,$eea)) {
//inside EEA
} else {
//outside EEA
}

特殊情况

您需要处理一些特殊情况,具体取决于您的预期用途是否包括在内:

欧盟的一部分,但有自己的ISO 2字母代码

  • 地理标志, 直布罗陀 (~英国(
  • AX, 奥兰群岛 (~芬兰(

请注意,还有更多这样的,但它们没有自己的 ISO 国家代码......

这些部分是欧盟和欧洲经济区的一部分,并有自己的2个字母的国家代码。

最外围地区

  • GF, 法属圭亚那 (~法国(
  • GP, 瓜德罗普岛 (~法国(
  • MQ, 马提尼克岛 (~法国(
  • YT, 马约特岛 (~法国(
  • RE, 留尼汪岛 (~法国(
  • MF, 圣马丁 (~法国(

这些变得复杂,你应该真正阅读每一个,因为你试图定义欧盟的具体原因,如果他们在里面还是在外面。另请注意,如果没有那么多的新闻报道,这些有时会发生变化。

海外国家和地区

还有更多这样的,但对于大多数用例,它们不应被视为欧盟的一部分,如果您有特定原因,仍然要检查它们。

飞地

这些往往没有自己的国家代码,但有时出于某些目的,仍然可以对它们应用不同的规则。

例如,德国或西班牙的孤立部分,但位于瑞士或摩洛哥境内。

欧洲自由贸易联盟

为完整起见:瑞士(CH(既不是欧盟成员也不是欧洲经济区的成员,但它是EFTA(欧洲自由贸易联盟(的成员。

微状态

列支敦士登是欧洲经济区的成员,但还有一些既不是欧盟也不是欧洲经济区的一部分。尽管如此,出于实际原因,他们确实有各种关系。 与欧盟(例如成为欧元区的一部分,在申根区内,收取增值税等(

  • 公元, 安道尔
  • LI, 列支敦士登
  • MC, 摩纳哥
  • SM, 圣马力诺
  • VC, 梵蒂冈城

大陆

如果您确实在寻找欧洲大陆,您将需要添加更多国家/地区,并且您将不得不与不仅仅在欧洲的国家(例如土耳其,俄罗斯(打交道。

麦克斯迈德的"欧盟"国家代码

Maxmind有时在无法确定实际是哪个国家时使用国家代码"EU"。这个"欧盟"指的是欧洲,而不是欧盟(欧盟国家代码实际上是保留的(。

更多信息:

https://en.wikipedia.org/wiki/Special_member_state_territories_and_the_European_Union https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 https://en.wikipedia.org/wiki/Microstates_and_the_European_Union https://dev.maxmind.com/faq/what-are-the-eu-europe-and-ap-asia-pacific-entries/

如果您只是在寻找该国是否是欧盟成员国,MaxMind 提供以下内容:

$record->country->isInEuropeanUnion

如果你想要大陆代码,你可以通过以下方式获得:

$record->continent->code

但是,请注意,并非所有欧洲国家都是欧盟的一部分。

相关内容

  • 没有找到相关文章

最新更新