Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用cURL进行PHP-JSON解析_Php_Json_Curl - Fatal编程技术网

使用cURL进行PHP-JSON解析

使用cURL进行PHP-JSON解析,php,json,curl,Php,Json,Curl,我想创建一个简单的页面来打印您所在的地区,我使用的是来自这个网站freegoip.net的API。我已经对它进行了设置,以便它通过站点运行用户ip并返回JSON,但是我在解析该响应时遇到了问题。这是我写的代码: <?php $person = $_SERVER["REMOTE_ADDR"]; $url = "freegeoip.net/json/$person"; $cURL = curl_init(); curl_setopt($cURL, CURLOPT_URL, $url);

我想创建一个简单的页面来打印您所在的地区,我使用的是来自这个网站freegoip.net的API。我已经对它进行了设置,以便它通过站点运行用户ip并返回JSON,但是我在解析该响应时遇到了问题。这是我写的代码:

<?php
$person = $_SERVER["REMOTE_ADDR"];

$url = "freegeoip.net/json/$person";

$cURL = curl_init();

curl_setopt($cURL, CURLOPT_URL, $url);

curl_setopt($cURL, CURLOPT_HTTPGET, true);

curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Accept: application/json'
    ));

$result = curl_exec($cURL);

curl_close($cURL);


$json = json_decode($result, true);

echo $json['region_name'];
echo $json['city'];
?>


但是由于某些原因,它仍然打印来自服务器API的完整响应。。。如何解决此问题?

在设置CURLOPT_HTTPHEADER后添加以下行:

curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1); 

默认情况下,curl_exec()直接输出响应,成功时返回TRUE,失败时返回FALSE。如果将CURLOPT_RETURNTRANSFER设置为TRUE,curl_exec()将返回成功操作的实际结果,但失败时仍将返回FALSE。

在设置CURLOPT_HTTPHEADER后添加以下行:

curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1); 

默认情况下,curl_exec()直接输出响应,成功时返回TRUE,失败时返回FALSE。如果将CURLOPT_RETURNTRANSFER设置为TRUE,curl_exec()将返回成功操作的实际结果,但失败时仍将返回FALSE。

您可以在使用代码尝试之前测试/检查响应您可以在使用代码尝试之前测试/检查响应