570
文章
·
29236
阅读
570
文章
·
29236
阅读

有21人阅读过 简单使用php处理json内容的模板
发布于2024/05/16 更新于2024/05/16
[ 教程仅保证更新时有效,请自行测试。]

如果使用api获取到的内容是json格式的,需要提取指定字段的结果,可考虑一下模板:

<?php
header("Content-type: text/json; charset=utf-8");
header("Cache-Control:no-cache,must-revalidate");
header("Pragma: no-cache");
function get_ip_info($ip) {
    $key = "xxxxx";
    $url = "https://apis.map.qq.com/ws/location/v1/ip?ip=$ip&key=$key";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    $response = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($response, true);
    if ($data['status'] == 'fail') {
        return ["error" => "无法获取IP信息"];
    };
    $result = [
        "region" => $data['result']['ad_info']['province'],
        "city" => $data['result']['ad_info']['city'],
        "district" => $data['result']['ad_info']['district'],
        "ip" => $data['result']['ip'],
    ];
    return $result;
}
$ip = $_GET['ip'];
$url = get_ip_info($ip) ;
$json= $url;
echo json_encode($json, JSON_UNESCAPED_UNICODE);
?>

以上代码中,先获取到的api返回的结果如下:

{
    "status": 0,
    "message": "Success",
    "request_id": "b695d2d475f347d29062eb2153ba8f4f",
    "result": {
        "ip": "2408:8459:3c40:607a:db1:500c:e2d8:ecf3",
        "location": {
            "lat": 22.55329,
            "lng": 113.88308
        },
        "ad_info": {
            "nation": "中国",
            "province": "广东省",
            "city": "深圳市",
            "district": "宝安区",
            "adcode": 440306,
            "nation_code": 156
        }
    }
}

通过

$result = [
        "region" => $data['result']['ad_info']['province'],
        "city" => $data['result']['ad_info']['city'],
        "district" => $data['result']['ad_info']['district'],
        "ip" => $data['result']['ip'],
    ];

获取指定位置的结果:

$data['result']

数据在多级目录下面,就逐层用[' ']包裹起来,

"district" => $data['result']['ad_info']['district']

此时已经将json对应字段的结果赋值给指定字段了,

$region = "广东省";
$city = "深圳市";
$district = "宝安区";
$ip = "2408:8459:3c40:607a:db1:500c:e2d8:ecf3";

以上代码返回的结果是:

{
    "region": "广东省",
    "city": "深圳市",
    "district": "南山区",
    "ip": "240e:3ba:30e0:a830:c5ba:4578:10f:b6dd"
}


文章对你有帮助吗?
  • 一般[0]
  • 很赞[0]
  • 没用[0]
  • 垃圾[0]
  • 无语[0]

继续阅读:

扫一扫,手机浏览手机访问本站