L o a d i n g . . .
主打一个C++
文章详情

通过ip地址查询归属地,使用库ip2region

Posted on 2025-01-01 19:09:45 by 主打一个C++

ip2region - 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率。

提供了众多主流编程语言的 `xdb` 数据生成和查询客户端实现。当前使用的php版本地址: https://github.com/lionsoul2014/ip2region/blob/master/binding/php/XdbSearcher.class.php

`xdb` 支持亿级别的 IP 数据段行数,默认的 region 信息都固定了格式:`国家|区域|省份|城市|ISP`,缺省的地域信息默认是0。

数据库下载: https://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.xdb

//增加调用函数如下:

function get_region($ip)
{
    // 数据库文件路径
    $dbFile = get_current_dir('/ip2region.xdb');
    try {
        $searcher = XdbSearcher::newWithFileOnly($dbFile);
    } catch (Exception $e) {
        //printf("failed to create searcher with '%s': %s\n", $dbFile, $e);
        return false;
    }

    $sTime = XdbSearcher::now();
    $region = $searcher->search($ip);
    if ($region === null) {
        //printf("failed search(%s)\n", $ip);
        return false;
    }
    //printf("{region: %s, took: %.5f ms}\n", $region, XdbSearcher::now() - $sTime);

    //格式化
    $regionString = $region;
    
    // 去掉字符串中的花括号
    $regionString = trim($regionString, "{}");
    
    // 将字符串分割为两部分
    $regionParts = explode(", took: ", $regionString);
    
    // 取出region部分
    $regionPart = $regionParts[0];
    
    // 去掉region: 和后面的|电信
    $regionPart = str_replace("region: ", "", $regionPart);
    $regionPart = explode("|", $regionPart);
    
    // 取出国家、省、地区
    //$country = $regionPart[0];
    $province = $regionPart[2];
    $city = $regionPart[3];
    //$y = $regionPart[4];
    // echo "国家: " . $country . "\n";
    // echo "省: " . $province . "\n";
    // echo "地区: " . $city . "\n";
    // echo "运营商: " . $y . "\n";
    if($province == '0'){
        $province = "未知";
    }
    return array("province" => $province, "city" => $city);
}

//调用:

require './ip2region/class_ip.php';

$ip = '123.2.3.4';

$arr = get_region($ip);

print_r($arr);

//我只需要省份和市级,测试结果

image.png

*转载请注明出处:原文链接:https://cpp.vin/page/113.html

作者近期文章
  • 随手笔记
  • 主打一个C++   2025-01-11 20:02:01
  • 都2000000025年了。还有不能随意访问guthub的,仔细看。在国内其实是可以正常访问的,gfw并没屏蔽。这里给出其中一个简单直接的方法稳定访问。1. 随便百度一个”dn
提示
×
确定
数据库执行: 8次 总耗时: 0.01s
页面加载耗时: 



wechat +447752296473
wechat cpp-blog