将 file_get_contents 转换为 IP 详细信息的数组
Converting file_get_contents to an array for IP details
我的网站上有这个简单的代码:
$info = file_get_contents('http://freegeoip.net/json/'.$_SERVER['REMOTE_ADDR']);
显示如下:
{"ip":"123.123.12.1","country_code":"GB","country_name":"United Kingdom","region_code":"ENG","region_name":"England","city":"London","zip_code":"LN1","time_zone":"Europe/London","latitude":30.302,"longitude":-1.123,"metro_code":0}
我正在尝试将其转换为数组,以便我可以使用类似于以下内容的方式将此数据导入数据库:
$ip_address = $info['ip'];
$city = $info['city'];
等等...我尝试使用 $info[1], $info[2]
并且它只显示 { "
文本的每个字符。有没有简单的方法可以做到这一点?
这是一种 JSON 格式,您可以使用 json_decode()
函数将其转换为对象或数组。
所以你有:
$info = file_get_contents('http://freegeoip.net/json/'.$_SERVER['REMOTE_ADDR']);
$info = json_decode($info, true);
然后就可以像你说的那样使用$info['ip']
和$info['city']
使用json_decode
$info_obj = json_decode($info);
现在 $info_obj 有你想要的信息,你可以通过以下方式访问它:
$ip_address = $info_obj->ip;
$city = $info_obj->city;
我的网站上有这个简单的代码:
$info = file_get_contents('http://freegeoip.net/json/'.$_SERVER['REMOTE_ADDR']);
显示如下:
{"ip":"123.123.12.1","country_code":"GB","country_name":"United Kingdom","region_code":"ENG","region_name":"England","city":"London","zip_code":"LN1","time_zone":"Europe/London","latitude":30.302,"longitude":-1.123,"metro_code":0}
我正在尝试将其转换为数组,以便我可以使用类似于以下内容的方式将此数据导入数据库:
$ip_address = $info['ip'];
$city = $info['city'];
等等...我尝试使用 $info[1], $info[2]
并且它只显示 { "
文本的每个字符。有没有简单的方法可以做到这一点?
这是一种 JSON 格式,您可以使用 json_decode()
函数将其转换为对象或数组。
所以你有:
$info = file_get_contents('http://freegeoip.net/json/'.$_SERVER['REMOTE_ADDR']); $info = json_decode($info, true);
然后就可以像你说的那样使用$info['ip']
和$info['city']
使用json_decode
$info_obj = json_decode($info);
现在 $info_obj 有你想要的信息,你可以通过以下方式访问它:
$ip_address = $info_obj->ip;
$city = $info_obj->city;