我正在使用MaxMind的免费GeoLite2 database
根据他们的code,我可以获得该国家的ISO代码
print($record->country->isoCode . "\n"); // 'US'
但是我如何获得大陆代码?
我更具体地寻找欧盟检测。
答案 0 :(得分:1)
<强> EU 强>
欧盟(欧盟)国家名单如下:
我使用的例子:
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
}
<强> EEA 强>
根据您的目标(考虑到GDPR可以强制执行后的问题),您可能希望测试EEA(欧洲经济区)。
EEA是:
这是我在完整geoip中使用的内容:
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字母代码
请注意,有更多这些,但他们没有自己的ISO国家/地区代码...
欧盟和欧洲经济区的这些部分,并有自己的2个字母的国家代码。
最外地区
这些变得复杂,你应该真正阅读每一个因为你寻求定义欧盟的具体原因,如果它们进入或退出。还要注意,如果没有那么多新闻报道,这些往往会发生变化。
海外国家和地区
其中甚至更多,但在大多数用例中它们不应被视为欧盟的一部分,如果您有特殊原因,仍然会检查它们。
<强>飞地强>
这些往往没有自己的国家/地区代码,但有时出于某些目的,可能会对它们应用不同的规则。
例子是例如隔离的部分。德国或西班牙,但位于例如瑞士或摩洛哥。
<强> EFTA 强>
完整性:瑞士(CH)既不是欧盟成员国也不是欧洲经济区成员国,但它是欧洲自由贸易联盟(EFTA)的成员。
微状态
列支敦士登是欧洲经济区的成员,但还有一些其他欧盟既不属于欧盟也不属于欧洲经济区。尽管如此,由于实际原因,他们确实有各种关系 与欧盟(例如成为欧元区的一部分,在申根区内,收取增值税等)
<强>洲强>
如果你确实在寻求大陆,你将需要增加更多的国家,你将不得不与不仅仅在欧洲的国家(如土耳其,俄罗斯)打交道。
Maxmind的“欧盟”国家/地区代码
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/
答案 1 :(得分:1)
如果您只是在寻找该国是否是欧盟成员国,MaxMind provides this:
$record->country->isInEuropeanUnion
如果你想要continent code,你可以使用:
$record->continent->code
但请注意,并非所有欧洲国家都是欧盟的一部分。