Получение кода ISO 3166-1 alpha-2 страны в Вконтакте
В данный момент я работаю над созданием социальной сети, которая не станет ничьей убийцей в виду своей тематической уникальности и убивать просто некого. Как и положено должна быть возможность регистрации через другие социальные сети. И вот дошли мы до социальной Вконтакте. Одним из полей в таблице где хранятся данные о пользователях социальной сети является идентификатор страны пользователя в формате ISO 3166-1 alpha-2.
ISO 3166-1 alpha-2 — система двухбуквенных кодов стран, определённая в ISO 3166-1, части стандарта ISO 3166, опубликованного Международной организацией по стандартизации (ISO) для обозначения стран, зависимых территорий и особых географических областей.
Подробнее про ISO 3166-1 alpha-2
Одним из методов, который возращает данные о пользователе является users.get
Но вот есть небольшая проблема. Данные о стране возвращаются в виде:
"country": { "id": 9, "title": "США" },
А нам как я уже упоминал нужен двубуквенный код страны в формате ISO 3166-1 alpha-2. Для получения данных обо всех странах можно воспользоваться методом database.getCountriesById
Для начала приведу массив кодов ISO 3166-1 alpha-2 по странам:
$iso_codes = [ "AF" => "Afghanistan", "AL" => "Albania", "DZ" => "Algeria", "AS" => "American Samoa", "AD" => "Andorra", "AO" => "Angola", "AI" => "Anguilla", "AQ" => "Antarctica", "AG" => "Antigua and Barbuda", "AR" => "Argentina", "AM" => "Armenia", "AW" => "Aruba", "AU" => "Australia", "AT" => "Austria", "AZ" => "Azerbaijan", "BS" => "Bahamas", "BH" => "Bahrain", "BD" => "Bangladesh", "BB" => "Barbados", "BY" => "Belarus", "BE" => "Belgium", "BZ" => "Belize", "BJ" => "Benin", "BM" => "Bermuda", "BT" => "Bhutan", "BO" => "Bolivia", "BQ" => "Bonaire, Sint Eustatius and Saba", "BA" => "Bosnia and Herzegovina", "BW" => "Botswana", "BV" => "Bouvet Island", "BR" => "Brazil", "IO" => "British Indian Ocean Territory", "BN" => "Brunei Darussalam", "BG" => "Bulgaria", "BF" => "Burkina Faso", "BI" => "Burundi", "KH" => "Cambodia", "CM" => "Cameroon", "CA" => "Canada", "CV" => "Cape Verde", "KY" => "Cayman Islands", "CF" => "Central African Republic", "TD" => "Chad", "CL" => "Chile", "CN" => "China", "CX" => "Christmas Island", "CC" => "Cocos (Keeling) Islands", "CO" => "Colombia", "KM" => "Comoros", "CG" => "Congo", "CD" => "Congo, the Democratic Republic of the", "CK" => "Cook Islands", "CR" => "Costa Rica", "CI" => "Cote D'Ivoire", "HR" => "Croatia", "CU" => "Cuba", "CY" => "Cyprus", "CZ" => "Czech Republic", "DK" => "Denmark", "DJ" => "Djibouti", "DM" => "Dominica", "DO" => "Dominican Republic", "EC" => "Ecuador", "EG" => "Egypt", "SV" => "El Salvador", "GQ" => "Equatorial Guinea", "ER" => "Eritrea", "EE" => "Estonia", "ET" => "Ethiopia", "FK" => "Falkland Islands (Malvinas)", "FO" => "Faroe Islands", "FJ" => "Fiji", "FI" => "Finland", "FR" => "France", "GF" => "French Guiana", "PF" => "French Polynesia", "TF" => "French Southern Territories", "GA" => "Gabon", "GM" => "Gambia", "GE" => "Georgia", "DE" => "Germany", "GG" => "Bailiwick of Guernsey", "GH" => "Ghana", "GI" => "Gibraltar", "GR" => "Greece", "GL" => "Greenland", "GD" => "Grenada", "GP" => "Guadeloupe", "GU" => "Guam", "GT" => "Guatemala", "GN" => "Guinea", "GW" => "Guinea-Bissau", "GY" => "Guyana", "HT" => "Haiti", "HM" => "Heard Island and Mcdonald Islands", "VA" => "Holy See (Vatican City State)", "HN" => "Honduras", "HK" => "Hong Kong", "HU" => "Hungary", "IS" => "Iceland", "IN" => "India", "ID" => "Indonesia", "IR" => "Iran, Islamic Republic of", "IQ" => "Iraq", "IE" => "Ireland", "IL" => "Israel", "IT" => "Italy", "JM" => "Jamaica", "JP" => "Japan", "JE" => "Jersey", "JO" => "Jordan", "KZ" => "Kazakhstan", "KE" => "Kenya", "KI" => "Kiribati", "KP" => "Korea, Democratic People's Republic of", "KR" => "Korea, Republic of", "KW" => "Kuwait", "KG" => "Kyrgyzstan", "LA" => "Lao People's Democratic Republic", "LV" => "Latvia", "LB" => "Lebanon", "LS" => "Lesotho", "LR" => "Liberia", "LY" => "Libyan Arab Jamahiriya", "LI" => "Liechtenstein", "LT" => "Lithuania", "LU" => "Luxembourg", "MO" => "Macao", "MK" => "Macedonia, the Former Yugoslav Republic of", "MG" => "Madagascar", "MW" => "Malawi", "MY" => "Malaysia", "MV" => "Maldives", "ML" => "Mali", "MT" => "Malta", "MH" => "Marshall Islands", "MQ" => "Martinique", "MR" => "Mauritania", "MU" => "Mauritius", "YT" => "Mayotte", "MX" => "Mexico", "FM" => "Micronesia, Federated States of", "MD" => "Moldova, Republic of", "MC" => "Monaco", "MN" => "Mongolia", "ME" => "Montenegro", "MS" => "Montserrat", "MA" => "Morocco", "MZ" => "Mozambique", "MM" => "Myanmar", "NA" => "Namibia", "NR" => "Nauru", "NP" => "Nepal", "NL" => "Netherlands", "AN" => "Netherlands Antilles", "NC" => "New Caledonia", "NZ" => "New Zealand", "NI" => "Nicaragua", "NE" => "Niger", "NG" => "Nigeria", "NU" => "Niue", "NF" => "Norfolk Island", "MP" => "Northern Mariana Islands", "NO" => "Norway", "OM" => "Oman", "PK" => "Pakistan", "PW" => "Palau", "PS" => "Palestinian Territory, Occupied", "PA" => "Panama", "PG" => "Papua New Guinea", "PY" => "Paraguay", "PE" => "Peru", "PH" => "Philippines", "PN" => "Pitcairn", "PL" => "Poland", "PT" => "Portugal", "PR" => "Puerto Rico", "QA" => "Qatar", "RE" => "Reunion", "RO" => "Romania", "RU" => "Russian Federation", "RW" => "Rwanda", "SH" => "Saint Helena", "KN" => "Saint Kitts and Nevis", "LC" => "Saint Lucia", "PM" => "Saint Pierre and Miquelon", "VC" => "Saint Vincent and the Grenadines", "WS" => "Samoa", "SM" => "San Marino", "ST" => "Sao Tome and Principe", "SA" => "Saudi Arabia", "SN" => "Senegal", "RS" => "Serbia", "SC" => "Seychelles", "SL" => "Sierra Leone", "SX" => "Sint Maarten", "SG" => "Singapore", "SK" => "Slovakia", "SI" => "Slovenia", "SB" => "Solomon Islands", "SO" => "Somalia", "ZA" => "South Africa", "GS" => "South Georgia and the South Sandwich Islands", "ES" => "Spain", "LK" => "Sri Lanka", "SD" => "Sudan", "SS" => "South Sudan", "SR" => "Suriname", "SJ" => "Svalbard and Jan Mayen", "SZ" => "Swaziland", "SE" => "Sweden", "CH" => "Switzerland", "SY" => "Syrian Arab Republic", "TW" => "Taiwan, Province of China", "TJ" => "Tajikistan", "TZ" => "Tanzania, United Republic of", "TH" => "Thailand", "TL" => "Timor-Leste", "TG" => "Togo", "TK" => "Tokelau", "TO" => "Tonga", "TT" => "Trinidad and Tobago", "TN" => "Tunisia", "TR" => "Turkey", "TM" => "Turkmenistan", "TC" => "Turks and Caicos Islands", "TV" => "Tuvalu", "UG" => "Uganda", "UA" => "Ukraine", "AE" => "United Arab Emirates", "GB" => "United Kingdom", "US" => "United States", "UM" => "United States Minor Outlying Islands", "UY" => "Uruguay", "UZ" => "Uzbekistan", "VU" => "Vanuatu", "VE" => "Venezuela", "VN" => "Viet Nam", "VG" => "Virgin Islands, British", "VI" => "Virgin Islands, U.s.", "WF" => "Wallis and Futuna", "EH" => "Western Sahara", "YE" => "Yemen", "ZM" => "Zambia", "ZW" => "Zimbabwe" ];
А теперь массив, где каждый ключ массива является кодом страны в социальной сети Вконтакте, а значением является двубуквенный идентификатор кода в формате ISO 3166-1 alpha-2.
$iso_vk_codes = [ "1" => "RU", "2" => "UA", "3" => "BY", "4" => "KZ", "5" => "AZ", "6" => "AM", "7" => "GE", "8" => "IL", "9" => "US", "10" => "CA", "11" => "KG", "12" => "LV", "13" => "LT", "14" => "EE", "15" => "MD", "16" => "TJ", "17" => "TM", "18" => "UZ", "19" => "AU", "20" => "AT", "21" => "AL", "22" => "DZ", "23" => "AS", "24" => "AI", "25" => "AO", "26" => "AD", "27" => "AG", "28" => "AR", "29" => "AW", "30" => "AF", "31" => "BS", "32" => "BD", "33" => "BB", "34" => "BH", "35" => "BZ", "36" => "BE", "37" => "BJ", "38" => "BM", "39" => "BG", "40" => "BO", "41" => "BA", "42" => "BW", "43" => "BR", "44" => "BN", "45" => "BF", "46" => "BI", "47" => "BT", "48" => "VU", "49" => "GB", "50" => "HU", "51" => "VE", "52" => "VG", "53" => "VI", "54" => "TL", "55" => "VN", "56" => "GA", "57" => "HT", "58" => "GY", "59" => "GM", "60" => "GH", "61" => "GP", "62" => "GT", "63" => "GN", "64" => "GW", "65" => "DE", "66" => "GI", "67" => "HN", "68" => "HK", "69" => "GD", "70" => "GL", "71" => "GR", "72" => "GU", "73" => "DK", "74" => "DM", "75" => "DO", "76" => "EG", "77" => "ZM", "78" => "EH", "79" => "ZW", "80" => "IN", "81" => "ID", "82" => "JO", "83" => "IQ", "84" => "IR", "85" => "IE", "86" => "IS", "87" => "ES", "88" => "IT", "89" => "YE", "90" => "CV", "91" => "KH", "92" => "CM", "93" => "QA", "94" => "KE", "95" => "CY", "96" => "KI", "97" => "CN", "98" => "CO", "99" => "KM", "100" => "CG", "101" => "CD", "102" => "CR", "103" => "CI", "104" => "CU", "105" => "KW", "106" => "LA", "107" => "LS", "108" => "LR", "109" => "LB", "110" => "LY", "111" => "LI", "112" => "LU", "113" => "MU", "114" => "MR", "115" => "MG", "116" => "MO", "117" => "MK", "118" => "MW", "119" => "MY", "120" => "ML", "121" => "MV", "122" => "MT", "123" => "MA", "124" => "MQ", "125" => "MH", "126" => "MX", "127" => "FM", "128" => "MZ", "129" => "MC", "130" => "MN", "131" => "MS", "132" => "MM", "133" => "NA", "134" => "NR", "135" => "NP", "136" => "NE", "137" => "NG", "138" => "AN", "139" => "NL", "140" => "NI", "141" => "NU", "142" => "NZ", "143" => "NC", "144" => "NO", "145" => "AE", "146" => "OM", "147" => "IM", "148" => "NF", "149" => "KY", "150" => "CK", "151" => "TC", "152" => "PK", "153" => "PW", "154" => "PS", "155" => "PA", "156" => "PG", "157" => "PY", "158" => "PE", "159" => "PN", "160" => "PL", "161" => "PT", "162" => "PR", "163" => "RE", "164" => "RW", "165" => "RO", "166" => "SV", "167" => "WS", "168" => "SM", "169" => "ST", "170" => "SA", "171" => "SZ", "172" => "SH", "173" => "KP", "174" => "MP", "175" => "SC", "176" => "SN", "177" => "VC", "178" => "KN", "179" => "LC", "180" => "PM", "181" => "RS", "182" => "SG", "183" => "SY", "184" => "SK", "185" => "SI", "186" => "SB", "187" => "SO", "188" => "SD", "189" => "SR", "190" => "SL", "191" => "TH", "192" => "TW", "193" => "TZ", "194" => "TG", "195" => "TK", "196" => "TO", "197" => "TT", "198" => "TV", "199" => "TN", "200" => "TR", "201" => "UG", "202" => "WF", "203" => "UY", "204" => "FO", "205" => "FJ", "206" => "PH", "207" => "FI", "208" => "FK", "209" => "FR", "210" => "GF", "211" => "PF", "212" => "HR", "213" => "CF", "214" => "TD", "215" => "CZ", "216" => "CL", "217" => "CH", "218" => "SE", "219" => "SJ", "220" => "LK", "221" => "EC", "222" => "GQ", "223" => "ER", "224" => "ET", "225" => "", "226" => "KR", "227" => "ZA", "228" => "JM", "229" => "JP", "230" => "ME", "231" => "DJ", "232" => "SS", "233" => "VA", "234" => "SX", "235" => "BQ", "236" => "GG", "237" => "JE", ];
Для этих стран в Вконтакте ответа не нашёл:
"TF" => "French Southern Territories", "YT" => "Mayotte", // нет в Вконтакте "AQ" => "Antarctica", "BV" => "Bouvet Island", // для этой страны в ВК не нашёл ответа "IO" => "British Indian Ocean Territory", "CX" => "Christmas Island", "CC" => "Cocos (Keeling) Islands", "HM" => "Heard Island and Mcdonald Islands", "GS" => "South Georgia and the South Sandwich Islands", "UM" => "United States Minor Outlying Islands",
Задал вопрос по поводу этих стран в поддержку Вконтакте и получил следующий ответ:
Если вы не нашли эти страны у нас, это значит только одно — их в базе нет. Список всех доступных стран можно получить этим методом — https://vk.com/dev/database.getCountries