2017-01-04 2 views
-2

То, что я пытаюсь сделать, - это получить название страны по коду страны. Возможно, есть простой способ сделать это, но я хотел бы сделать это с помощью массива (процесс обучения). В настоящее время я получаю только код страны («ES» в моем случае) City и IP.Включить код страны в название страны с помощью массива PHP

И что я хочу сделать, это превратить «ES» в «Испанию».

Помощь! и спасибо заранее. Это мой код:

<?php 

$ip = getenv('HTTP_CLIENT_IP')?: 
getenv('HTTP_X_FORWARDED_FOR')?: 
getenv('HTTP_X_FORWARDED')?: 
getenv('HTTP_FORWARDED_FOR')?: 
getenv('HTTP_FORWARDED')?: 
getenv('REMOTE_ADDR'); 

$location = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); 

$country_name = array(
    'AF' => 'Afghanistan', 
    'AX' => 'Aland Islands', 
    '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 the', 
    'BH' => 'Bahrain', 
    'BD' => 'Bangladesh', 
    'BB' => 'Barbados', 
    'BY' => 'Belarus', 
    'BE' => 'Belgium', 
    'BZ' => 'Belize', 
    'BJ' => 'Benin', 
    'BM' => 'Bermuda', 
    'BT' => 'Bhutan', 
    'BO' => 'Bolivia', 
    'BA' => 'Bosnia and Herzegovina', 
    'BW' => 'Botswana', 
    'BV' => 'Bouvet Island (Bouvetoya)', 
    'BR' => 'Brazil', 
    'IO' => 'British Indian Ocean Territory (Chagos Archipelago)', 
    'VG' => 'British Virgin Islands', 
    '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 the', 
    'CD' => 'Congo', 
    'CG' => 'Congo 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', 
    'FO' => 'Faroe Islands', 
    'FK' => 'Falkland Islands (Malvinas)', 
    'FJ' => 'Fiji the Fiji Islands', 
    'FI' => 'Finland', 
    'FR' => 'France, French Republic', 
    'GF' => 'French Guiana', 
    'PF' => 'French Polynesia', 
    'TF' => 'French Southern Territories', 
    'GA' => 'Gabon', 
    'GM' => 'Gambia the', 
    'GE' => 'Georgia', 
    'DE' => 'Germany', 
    'GH' => 'Ghana', 
    'GI' => 'Gibraltar', 
    'GR' => 'Greece', 
    'GL' => 'Greenland', 
    'GD' => 'Grenada', 
    'GP' => 'Guadeloupe', 
    'GU' => 'Guam', 
    'GT' => 'Guatemala', 
    'GG' => 'Guernsey', 
    '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', 
    'IQ' => 'Iraq', 
    'IE' => 'Ireland', 
    'IM' => 'Isle of Man', 
    'IL' => 'Israel', 
    'IT' => 'Italy', 
    'JM' => 'Jamaica', 
    'JP' => 'Japan', 
    'JE' => 'Jersey', 
    'JO' => 'Jordan', 
    'KZ' => 'Kazakhstan', 
    'KE' => 'Kenya', 
    'KI' => 'Kiribati', 
    'KP' => 'Korea', 
    'KR' => 'Korea', 
    'KW' => 'Kuwait', 
    'KG' => 'Kyrgyz Republic', 
    'LA' => 'Lao', 
    'LV' => 'Latvia', 
    'LB' => 'Lebanon', 
    'LS' => 'Lesotho', 
    'LR' => 'Liberia', 
    'LY' => 'Libyan Arab Jamahiriya', 
    'LI' => 'Liechtenstein', 
    'LT' => 'Lithuania', 
    'LU' => 'Luxembourg', 
    'MO' => 'Macao', 
    'MK' => 'Macedonia', 
    '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', 
    'MD' => 'Moldova', 
    'MC' => 'Monaco', 
    'MN' => 'Mongolia', 
    'ME' => 'Montenegro', 
    'MS' => 'Montserrat', 
    'MA' => 'Morocco', 
    'MZ' => 'Mozambique', 
    'MM' => 'Myanmar', 
    'NA' => 'Namibia', 
    'NR' => 'Nauru', 
    'NP' => 'Nepal', 
    'AN' => 'Netherlands Antilles', 
    'NL' => 'Netherlands the', 
    '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', 
    'PA' => 'Panama', 
    'PG' => 'Papua New Guinea', 
    'PY' => 'Paraguay', 
    'PE' => 'Peru', 
    'PH' => 'Philippines', 
    'PN' => 'Pitcairn Islands', 
    'PL' => 'Poland', 
    'PT' => 'Portugal, Portuguese Republic', 
    'PR' => 'Puerto Rico', 
    'QA' => 'Qatar', 
    'RE' => 'Reunion', 
    'RO' => 'Romania', 
    'RU' => 'Russian Federation', 
    'RW' => 'Rwanda', 
    'BL' => 'Saint Barthelemy', 
    'SH' => 'Saint Helena', 
    'KN' => 'Saint Kitts and Nevis', 
    'LC' => 'Saint Lucia', 
    'MF' => 'Saint Martin', 
    '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', 
    'SG' => 'Singapore', 
    'SK' => 'Slovakia (Slovak Republic)', 
    'SI' => 'Slovenia', 
    'SB' => 'Solomon Islands', 
    'SO' => 'Somalia, Somali Republic', 
    'ZA' => 'South Africa', 
    'GS' => 'South Georgia and the South Sandwich Islands', 
    'ES' => 'Spain', 
    'LK' => 'Sri Lanka', 
    'SD' => 'Sudan', 
    'SR' => 'Suriname', 
    'SJ' => 'Svalbard & Jan Mayen Islands', 
    'SZ' => 'Swaziland', 
    'SE' => 'Sweden', 
    'CH' => 'Switzerland, Swiss Confederation', 
    'SY' => 'Syrian Arab Republic', 
    'TW' => 'Taiwan', 
    'TJ' => 'Tajikistan', 
    'TZ' => 'Tanzania', 
    '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 of America', 
    'UM' => 'United States Minor Outlying Islands', 
    'VI' => 'United States Virgin Islands', 
    'UY' => 'Uruguay, Eastern Republic of', 
    'UZ' => 'Uzbekistan', 
    'VU' => 'Vanuatu', 
    'VE' => 'Venezuela', 
    'VN' => 'Vietnam', 
    'WF' => 'Wallis and Futuna', 
    'EH' => 'Western Sahara', 
    'YE' => 'Yemen', 
    'ZM' => 'Zambia', 
    'ZW' => 'Zimbabwe' 
); 

$country_code = $location->country; 

foreach ($country_name as $country_full_name) { 

    if (in_array($country_code, $country_full_name)) { 

     echo $country_full_name; 

    } 
} 

echo 'Your IP is: ', $ip, '<br>'; 
echo 'and your city ', $location->city, '<br>'; 
echo 'located in ', $country_code,'.'; 
echo $country_full_name; 
+0

'$ country_name ['AF']' – anshuVersatile

+0

'$ country_code' соответствует правильному ключу в' $ country_name', поэтому вы можете просто использовать '$ country_name [$ country_code]' – billyonecan

+0

Спасибо за вашу помощь, но можете вы немного более конкретны? Я хочу сопоставить $ country_name с $ country_code. – KAZZABE

ответ

0
<?php 

$ip = getenv('HTTP_CLIENT_IP')?: 
getenv('HTTP_X_FORWARDED_FOR')?: 
getenv('HTTP_X_FORWARDED')?: 
getenv('HTTP_FORWARDED_FOR')?: 
getenv('HTTP_FORWARDED')?: 
getenv('REMOTE_ADDR'); 

$location = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); 

$country_name = array(
    'AF' => 'Afghanistan', 
    'AX' => 'Aland Islands', 
    '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 the', 
    'BH' => 'Bahrain', 
    'BD' => 'Bangladesh', 
    'BB' => 'Barbados', 
    'BY' => 'Belarus', 
    'BE' => 'Belgium', 
    'BZ' => 'Belize', 
    'BJ' => 'Benin', 
    'BM' => 'Bermuda', 
    'BT' => 'Bhutan', 
    'BO' => 'Bolivia', 
    'BA' => 'Bosnia and Herzegovina', 
    'BW' => 'Botswana', 
    'BV' => 'Bouvet Island (Bouvetoya)', 
    'BR' => 'Brazil', 
    'IO' => 'British Indian Ocean Territory (Chagos Archipelago)', 
    'VG' => 'British Virgin Islands', 
    '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 the', 
    'CD' => 'Congo', 
    'CG' => 'Congo 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', 
    'FO' => 'Faroe Islands', 
    'FK' => 'Falkland Islands (Malvinas)', 
    'FJ' => 'Fiji the Fiji Islands', 
    'FI' => 'Finland', 
    'FR' => 'France, French Republic', 
    'GF' => 'French Guiana', 
    'PF' => 'French Polynesia', 
    'TF' => 'French Southern Territories', 
    'GA' => 'Gabon', 
    'GM' => 'Gambia the', 
    'GE' => 'Georgia', 
    'DE' => 'Germany', 
    'GH' => 'Ghana', 
    'GI' => 'Gibraltar', 
    'GR' => 'Greece', 
    'GL' => 'Greenland', 
    'GD' => 'Grenada', 
    'GP' => 'Guadeloupe', 
    'GU' => 'Guam', 
    'GT' => 'Guatemala', 
    'GG' => 'Guernsey', 
    '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', 
    'IQ' => 'Iraq', 
    'IE' => 'Ireland', 
    'IM' => 'Isle of Man', 
    'IL' => 'Israel', 
    'IT' => 'Italy', 
    'JM' => 'Jamaica', 
    'JP' => 'Japan', 
    'JE' => 'Jersey', 
    'JO' => 'Jordan', 
    'KZ' => 'Kazakhstan', 
    'KE' => 'Kenya', 
    'KI' => 'Kiribati', 
    'KP' => 'Korea', 
    'KR' => 'Korea', 
    'KW' => 'Kuwait', 
    'KG' => 'Kyrgyz Republic', 
    'LA' => 'Lao', 
    'LV' => 'Latvia', 
    'LB' => 'Lebanon', 
    'LS' => 'Lesotho', 
    'LR' => 'Liberia', 
    'LY' => 'Libyan Arab Jamahiriya', 
    'LI' => 'Liechtenstein', 
    'LT' => 'Lithuania', 
    'LU' => 'Luxembourg', 
    'MO' => 'Macao', 
    'MK' => 'Macedonia', 
    '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', 
    'MD' => 'Moldova', 
    'MC' => 'Monaco', 
    'MN' => 'Mongolia', 
    'ME' => 'Montenegro', 
    'MS' => 'Montserrat', 
    'MA' => 'Morocco', 
    'MZ' => 'Mozambique', 
    'MM' => 'Myanmar', 
    'NA' => 'Namibia', 
    'NR' => 'Nauru', 
    'NP' => 'Nepal', 
    'AN' => 'Netherlands Antilles', 
    'NL' => 'Netherlands the', 
    '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', 
    'PA' => 'Panama', 
    'PG' => 'Papua New Guinea', 
    'PY' => 'Paraguay', 
    'PE' => 'Peru', 
    'PH' => 'Philippines', 
    'PN' => 'Pitcairn Islands', 
    'PL' => 'Poland', 
    'PT' => 'Portugal, Portuguese Republic', 
    'PR' => 'Puerto Rico', 
    'QA' => 'Qatar', 
    'RE' => 'Reunion', 
    'RO' => 'Romania', 
    'RU' => 'Russian Federation', 
    'RW' => 'Rwanda', 
    'BL' => 'Saint Barthelemy', 
    'SH' => 'Saint Helena', 
    'KN' => 'Saint Kitts and Nevis', 
    'LC' => 'Saint Lucia', 
    'MF' => 'Saint Martin', 
    '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', 
    'SG' => 'Singapore', 
    'SK' => 'Slovakia (Slovak Republic)', 
    'SI' => 'Slovenia', 
    'SB' => 'Solomon Islands', 
    'SO' => 'Somalia, Somali Republic', 
    'ZA' => 'South Africa', 
    'GS' => 'South Georgia and the South Sandwich Islands', 
    'ES' => 'Spain', 
    'LK' => 'Sri Lanka', 
    'SD' => 'Sudan', 
    'SR' => 'Suriname', 
    'SJ' => 'Svalbard & Jan Mayen Islands', 
    'SZ' => 'Swaziland', 
    'SE' => 'Sweden', 
    'CH' => 'Switzerland, Swiss Confederation', 
    'SY' => 'Syrian Arab Republic', 
    'TW' => 'Taiwan', 
    'TJ' => 'Tajikistan', 
    'TZ' => 'Tanzania', 
    '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 of America', 
    'UM' => 'United States Minor Outlying Islands', 
    'VI' => 'United States Virgin Islands', 
    'UY' => 'Uruguay, Eastern Republic of', 
    'UZ' => 'Uzbekistan', 
    'VU' => 'Vanuatu', 
    'VE' => 'Venezuela', 
    'VN' => 'Vietnam', 
    'WF' => 'Wallis and Futuna', 
    'EH' => 'Western Sahara', 
    'YE' => 'Yemen', 
    'ZM' => 'Zambia', 
    'ZW' => 'Zimbabwe' 
); 

$country_code = $location->country; 
$country_full_name = $country_name[$country_code]; 

echo 'Your IP is: ', $ip, '<br>'; 
echo 'and your city ', $location->city, '<br>'; 
echo 'located in ', $country_code,'<br>'; 
echo 'Your Country is: ', $country_full_name, '.'; 
+0

Я попробую и дам вам знать @anshuVersatile – KAZZABE

+0

Я протестировал его, и я получаю эту ошибку: ** Ошибка анализа: синтаксическая ошибка, неожиданное «эхо» (T_ECHO) в /homepages/3/d598706495/htdocs/wp-content/uploads/ip.php в строке 267 ** – KAZZABE

+0

какая у вас ошибка? – anshuVersatile

1

Как я просмотрел комментарии, я предполагаю, что вы до сих пор не понимаю, как эта идея упоминается billyonecan работ. Вот почему я ответил. Не усложняйте это. Если у вас есть код страны ES и вы хотите получить соответствующее название страны, которое равно Spain, в этом случае вы можете просто получить доступ к названию страны в массиве только одним ключом. Здесь ключ ES и код:

$country_code = $location->country; 
$country_full_name = $country_name[$country_code]; // Accessing ES => Spain 

$country_name[$country_code] такое же, как делать с $country_name['ES'] если переменная $country_code содержит значение ES.

Я не могу объяснить это лучше. Надеюсь, вы поняли. :)

+0

Теперь я вижу это ясно. Помощь была действительно полезной. В конце он работает. Я удалил только оператор foreach и теперь дает ожидаемый результат. – KAZZABE

+0

Да. Для этого вам не нужно «foreach». В вашем случае достаточно всего одной строки. – Perumal

+0

Смотрите это в прямом эфире [здесь] (http://kazzabe.com.es/wp-content/uploads/get_country.php) – KAZZABE

Смежные вопросы