使用php获取并解码json


Get and decode json with php

我确信这与其他问题类似,但我已经尝试了解决方案,但无法使其发挥作用。

我正在尝试获取IP地址的位置,解码json并打印它。我实际上计划将其放入数据库,但我甚至不确定为什么我无法将任何内容打印到屏幕上。

$ip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("http://api.hostip.info/get_json.php?ip=".$ip);
$local = json_decode($json,true);

谢谢。

A。当你指的是I cant get anything to print to the screen.时,你肯定可以得到任何东西,因为你没有向屏幕输出任何东西。

error_reporting(E_ALL);
$ip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("http://api.hostip.info/get_json.php?ip=".$ip);
$local = json_decode($json,true);
echo $local['city'] ;
print  $local['country_name'] ;
var_dump($local);

B。这也意味着不允许file_get_contents从另一个域加载信息的allow_url_include set to Off

首先,您提供的代码实际上并没有打印任何内容,这可以解释为什么会出现空白屏幕。我想您稍后会在程序中执行类似echo $local;的操作,但如果没有,那就是问题所在。

假设这不是问题所在。。。。

两种可能性:

  1. file_get_contents()正在返回错误。

  2. json_decode()正在返回错误。

首先,您应该在代码中添加一些额外的错误陷阱,以确定哪一个是问题所在。

如果您将PHP设置为不显示错误,请考虑打开它们,这样您就可以看到生成的任何错误。或者查看服务器日志以查看错误。

如果URL无效,file_get_contents()可能会失败。如果您的PHP安装设置为不允许通过文件处理函数访问URL,那么它也可能失败。如果是这种情况,您将需要更改php.ini设置。如果你不能做到这一点,你将不得不通过一个不同的方法加载文件(例如Curl)。

只有当json_decode()获取的字符串是无效的JSON时,它才有可能失败。您应该检查URL的输出以确认它看起来是正确的,并像firebug一样检查它以确保它是有效的。

希望能有所帮助。