Континент код Maxmind GeoLite2 - PullRequest
0 голосов
/ 09 июня 2018

Я использую бесплатную базу данных GeoLite2 от MaxMind .
По их коду я могу получить ISO-код страны.
print($record->country->isoCode . "\n"); // 'US'
Нокак получить код континента?Я более конкретно ищу обнаружение ЕС.

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Если вы просто ищете, является ли страна государством-членом Европейского Союза, MaxMind предоставляет это :

$record->country->isInEuropeanUnion

Если вы хотите код континента , вы можете получить его с помощью:

$record->continent->code

Тем не менее, обратите внимание, что не все страны Европы являются частью Европейского союза.

0 голосов
/ 09 июня 2018

EU

Список стран ЕС (Европейского Союза):

  • AT, Австрия
  • BE, Бельгия
  • BG, Болгария
  • CR, Хорватия
  • CY, Республика Кипр
  • CZ, Чехия
  • DK, Дания
  • EE, Эстония
  • FI, Финляндия
  • FR, Франция
  • DE, Германия
  • GR, Греция
  • HU, Венгрия
  • IE, Ирландия
  • IT, Италия
  • LV, Латвия
  • LI, Литва
  • LU, Люксембург
  • MT, Мальта
  • NL, Нидерланды
  • PL, Польша
  • PT, Португалия
  • RO, Румыния
  • SK, Словакия
  • SI, Словения
  • SP, Испания
  • SE, Швеция
  • 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
}

EEA

В зависимости от того, что вы хотите сделать (учитывая, что об этом спрашивают после того, как GDPR вступил в силу), вы можете захотеть проверить на EEA (EuВместо этого:

ЕЭП:

  • всех членов ЕС
  • НЕТ, Норвегия
  • ИС, Исландия
  • LI, Лихтенштейн

Это то, что я использую с полным геоипом:

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

  • GI, Гибралтар (~ Великобритания)
  • AX, Аландские острова (~ Финляндия)

Обратите внимание, что их больше, но они не имеют кода страны ISO своегособственные ...

Эти части ЕС и ЕЭЗ, и имеют свой собственный двухбуквенный код страны.

Крайние регионы

  • GF, Французская Гвиана (~ Франция)
  • GP, Гваделупа (~ Франция)
  • MQ, Мартиника (~ Франция)
  • YT, Майотта (~ Франция)
  • RE, Реюньон (~ Франция)
  • MF, Сен-Мартен (~Франция)

С этими усложняется сложность, вы должны внимательно прочитать каждый из них по конкретной причине, по которой вы стремитесь определить ЕС, если они входят или нет.Также обратите внимание, что они имеют тенденцию меняться иногда без особого освещения в прессе.

Зарубежные страны и территории

Их еще больше, но их не следует рассматривать как частьЕС для большинства случаев использования, все же проверьте их, если у вас есть конкретные причины.

Анклавы

Как правило, они не имеют своего собственного кода страны, но иногдатем не менее, к некоторым целям могут применяться разные правила.

Примерами являются отдельные части, например, Германии или Испании, но расположенные, например, в Швейцарии или Марокко.

EFTA

Для полноты: Швейцария (СН) не является ни членом ЕС, ни ЕЭЗ, но она является членом ЕАСТ (Европейской ассоциации свободной торговли).

Микро-государства

Лихтенштейн является членом ЕЭП, но есть несколько других, которые не являются ни частью ЕС, ни ЕАОС.Тем не менее, по практическим причинам они имеют различные отношения с ЕС (например, будучи частью зоны евро, находясь внутри Шенгенской зоны, взимая НДС и т. Д.)

  • нашей эры, Андорра
  • LI, Лихтенштейн
  • MC, Монако
  • SM, Сан-Марино
  • VC, Ватикан

Континент

Если вы ищете континент, вам нужно будет добавить гораздо больше стран, и вам придется иметь дело со странами, которые находятся не только в Европе (например, Турция, Россия).

Код страны Maxmind "EU"

Иногда 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/

...