我有一个功能,我在这里找到用户ip到国家。但它只显示我要显示完整国家和abrev的abrev
function ip_details($IPaddress)
{
$json = file_get_contents("http://ipinfo.io/{$IPaddress}");
$details = json_decode($json);
return $details;
}
$IPaddress = 'get ip here';
$details = ip_details("$IPaddress");
echo $details->region;
echo $details->country;
然后我回想起我想要的地方。
<?php echo $details->country;?>
所以我去了IpInfo Site
它告诉我下载和映射我已经下载了json文件,但不确定如何映射它以便我可以在需要时回显完整的国家/地区名称
答案 0 :(得分:2)
我会从JSON中获取国家/地区代码,并在代码中创建一个PHP数组,以便快速查找。
$countryCodes = ['BD'=>'Bangladesh', ...];
if ( array_key_exists($details->country, $countryCodes) {
$country = $countryCodes[$details->country];
}
答案 1 :(得分:2)
此代码段从JSON获取我认为您想要的输出。
一旦您对此脚本感到满意,就可以用硬编码的IP地址替换脚本中的值。
* * * * * command to execute
│ │ │ │ │
│ │ │ │ └─── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
│ │ │ └──────── month (1 - 12)
│ │ └───────────── day of month (1 - 31)
│ └────────────────── hour (0 - 23)
└─────────────────────── min (0 - 59)
输出:
$countries = json_decode(file_get_contents('http://country.io/names.json'));
$details = json_decode(file_get_contents("http://ipinfo.io/8.8.8.8"));
$code = $details->country;
echo "Country Name: ".$countries->$code."<br/>";
echo "Country Code: ".$code."<br/>";
echo "Region: ".$details->region."<br/>";
echo "City: ".$details->city."<br/>";
答案 2 :(得分:1)
您可以使用以下功能从国家/地区代码中获取国家/地区名称:
function getCountryName($code) {
$json = file_get_contents("http://country.io/names.json");
$countries = json_decode($json, TRUE);
return array_key_exists($code,$countries) ? $countries[$code] : false;
}
作为改进,您可以下载http://country.io/names.json
json文件并在此处引用它,而不是每次都远程调用它。
答案 3 :(得分:-1)
您需要使用PHP的json_decode
函数将JSON数据转换为数组。
示例:
$country_json = file_get_contents('http://country.io/names.json');
$country_array = json_decode($country_json, TRUE); // TRUE turns the result into an associative array
echo $country_array[$details->country];