使用php获取和解码json

时间:2012-09-12 12:40:14

标签: php json

我确定这与其他问题类似,但我尝试过这些解决方案,并且无法使其发挥作用。

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

一个。当你的意思是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中。这也意味着allow_url_include set to Off不允许file_get_contents加载来自其他域的信息

答案 1 :(得分:0)

首先,您提供的代码实际上并没有打印任何内容,这可以解释为什么您会出现空白屏幕。我假设你之后在程序中做了类似echo $local;的事情,但如果没有,那就是问题。

假设不是问题......

两种可能性:

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

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

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

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

    如果网址无效,

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

    如果获得的字符串是无效的JSON,

    json_decode()可能会失败。你应该检查URL的输出以确认它看起来是正确的,并检查它像firebug,以确保它是有效的。

    希望有所帮助。