ip-location-zh 完全指南:PHP 如何 3 分钟搞定无需数据库的 IP 地理位置查询?
【免费下载链接】ip-location-zh获取 IP 地址的真实地理位置项目地址: https://gitcode.com/gh_mirrors/ip/ip-location-zh
ip-location-zh 是一款免费、无需数据库的 PHP IP 地理位置查询库:只需一行Ip::find(),就能把任意 IP 解析为「中国 河南 郑州」这样的中文地址,并附带行政区划代码。本文带你 3 分钟完成安装、上手与原理速览。
📌 ip-location-zh 是什么?适合谁用?
如果你想在 PHP 项目里做访客定位、日志审计、风控识别,又不想搭建 IP 数据库,它就是一个专注的「小而美」方案:
| 特点 | 说明 |
|---|---|
| 🚫 零数据库 | 地理数据打包成一个二进制文件src/20190703.ipdb,装完即用,不依赖 MySQL / Redis |
| 🇨🇳 中文数据 | 数据源自 IPIP,国内地址精确到市级,国外地址同样可查(详细度略低) |
| ⚡ 一个方法 | 核心 API 只有一个静态方法find,学习成本约等于零 |
| 🌐 双栈支持 | 同时支持 IPv4 与 IPv6 解析(实现见src/Ip.php中的findNode) |
| 💰 免费 | MIT 协议,适合预算有限、需求简单的个人与中小项目 |
⏱️ 3 分钟安装步骤:composer 一条命令搞定
第 1 步:安装 composer(若已安装可跳过),然后执行:
composer require "zhuzhichao/ip-location-zh"第 2 步:确认数据包到位。安装后检查项目下是否存在src/20190703.ipdb文件,它就是全部"数据库"。
第 3 步(可选):获取源码阅读
git clone https://gitcode.com/gh_mirrors/ip/ip-location-zh无需任何配置项、无需建表导数据——到这里,安装就全部完成了 ✅
🔍 最快使用方法:一行代码查询 IP 地理位置
<?php require 'vendor/autoload.php'; use Zhuzhichao\IpLocationZh\Ip; var_dump(Ip::find('171.12.10.156'));返回一个 5 元素数组:
| 下标 | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| 含义 | 国家 | 省/直辖市 | 市 | 区(预留位) | 行政区划代码 |
| 示例 | 中国 | 河南 | 郑州 | (空字符串) | 410100 |
💡 行政区划代码可直接用于地图定位、区域运营等业务场景,完整省市对照表可通过
Ip::locations()获取。
🎨 Laravel 项目优雅接入
Laravel 用户可以直接用Ip::find(Request::getClientIp())拿到当前访问者的城市:
- Laravel 5.5+:包已内置服务发现(见
composer.json的extra.laravel.aliases),装完即用,什么都不用改 - Laravel 5.0 – 5.4:在
config/app.php的aliases中加一行'Ip' => 'Zhuzhichao\IpLocationZh\Ip'即可
🧠 核心原理:为什么它不需要数据库?
- 二进制索引树:
src/20190703.ipdb采用 IPIP 的 ipdb 格式,前半部分是二进制树索引,查询时按 IP 的比特位逐层向下查找节点,定位极快 - 进程级内存缓存:首次查询时打开文件并缓存读取器(单例),同一 IP 的重复查询直接命中内存缓存
self::$cached,几乎零开销 - 单文件即数据:整个"数据库"就一个文件,备份、迁移、上云都只要拷贝这一个文件
⚠️ 边界情况与注意事项
| 输入 | 行为 |
|---|---|
非法 IP(如abc) | 抛出InvalidArgumentException |
| 空字符串 | 返回'N/A' |
本机地址127.0.0.1 | 返回「本机地址」 |
| 国外 IP | 可查到,但详细度低于国内 |
另外请知悉:该免费库不提供经纬度、运营商、区县级等更细内容;数据包更新于 2019-07-03,更新周期不定期。如有更高精度的商业需求,建议对接 IPIP 的付费服务。
📂 文件结构速览
| 文件 | 说明 |
|---|---|
src/Ip.php | 核心类Zhuzhichao\IpLocationZh\Ip,含find查询与locations区划代码 |
src/20190703.ipdb | 二进制地理数据文件(IPIP 格式) |
tests/TestIp.php | 单元测试:验证郑州、杭州、本机地址等典型查询结果 |
composer.json | 包元数据,包名zhuzhichao/ip-location-zh |
License.txt | MIT 开源协议 |
总结:ip-location-zh 用「一个文件 + 一个方法」的极简设计,把 IP 地理位置查询从"要部署数据库"降低到"一条 composer 命令"。对于日志城市标签、访问统计、简单风控等场景,它是一个开箱即用、值得收藏的免费 PHP 工具。
【免费下载链接】ip-location-zh获取 IP 地址的真实地理位置项目地址: https://gitcode.com/gh_mirrors/ip/ip-location-zh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考