news 2026/8/26 15:02:00

ip-location-zh 完全指南:PHP 如何 3 分钟搞定无需数据库的 IP 地理位置查询?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ip-location-zh 完全指南:PHP 如何 3 分钟搞定无需数据库的 IP 地理位置查询?

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 元素数组:

下标01234
含义国家省/直辖市区(预留位)行政区划代码
示例中国河南郑州(空字符串)410100

💡 行政区划代码可直接用于地图定位、区域运营等业务场景,完整省市对照表可通过Ip::locations()获取。

🎨 Laravel 项目优雅接入

Laravel 用户可以直接用Ip::find(Request::getClientIp())拿到当前访问者的城市:

  • Laravel 5.5+:包已内置服务发现(见composer.jsonextra.laravel.aliases),装完即用,什么都不用改
  • Laravel 5.0 – 5.4:在config/app.phpaliases中加一行'Ip' => 'Zhuzhichao\IpLocationZh\Ip'即可

🧠 核心原理:为什么它不需要数据库?

  1. 二进制索引树src/20190703.ipdb采用 IPIP 的 ipdb 格式,前半部分是二进制树索引,查询时按 IP 的比特位逐层向下查找节点,定位极快
  2. 进程级内存缓存:首次查询时打开文件并缓存读取器(单例),同一 IP 的重复查询直接命中内存缓存self::$cached,几乎零开销
  3. 单文件即数据:整个"数据库"就一个文件,备份、迁移、上云都只要拷贝这一个文件

⚠️ 边界情况与注意事项

输入行为
非法 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.txtMIT 开源协议

总结:ip-location-zh 用「一个文件 + 一个方法」的极简设计,把 IP 地理位置查询从"要部署数据库"降低到"一条 composer 命令"。对于日志城市标签、访问统计、简单风控等场景,它是一个开箱即用、值得收藏的免费 PHP 工具。

【免费下载链接】ip-location-zh获取 IP 地址的真实地理位置项目地址: https://gitcode.com/gh_mirrors/ip/ip-location-zh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 15:01:34

MinIO 停止维护怎么办?Docker 迁移 RustFS 实战:数据零丢失

前言 MinIO 说停就停&#xff0c;线上的文件服务还得接着跑。 2025 年 12 月&#xff0c;MinIO 官宣社区版进入维护模式。2026 年 2 月&#xff0c;仓库归档只读&#xff1a;不再有提交&#xff0c;CVE 不再修复&#xff0c;官方资源全面转向商业版 AIStor——订阅制&#xf…

作者头像 李华
网站建设 2026/8/26 14:59:16

LX Music 桌面版:免费音乐聚合播放器完整指南

LX Music 桌面版&#xff1a;免费音乐聚合播放器完整指南 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 想找一首歌来听&#xff0c;通常需要挨个打开几个音乐应用&#xff0c;看…

作者头像 李华
网站建设 2026/8/26 14:58:00

Outfit 字体完整指南:9 种字重免费商用,3 分钟装进系统

Outfit 字体完整指南&#xff1a;9 种字重免费商用&#xff0c;3 分钟装进系统 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts Outfit 字体是品牌公司 outfit.io 的官方几何无衬线字体&#xff0…

作者头像 李华
网站建设 2026/8/26 14:51:46

Shallows序列化能力清单:JSON、Plist与String存储映射全覆盖指南

Shallows序列化能力清单&#xff1a;JSON、Plist与String存储映射全覆盖指南 【免费下载链接】Shallows &#x1f6f6; Your lightweight persistence toolbox 项目地址: https://gitcode.com/gh_mirrors/sh/Shallows Shallows 是一个轻量级的 Swift 持久化工具箱&#…

作者头像 李华
网站建设 2026/8/26 14:51:25

为什么Intel放弃Hyperscan:Vectorscan项目背后的开源反击战

为什么Intel放弃Hyperscan&#xff1a;Vectorscan项目背后的开源反击战 【免费下载链接】vectorscan A portable fork of the high-performance regular expression matching library 项目地址: https://gitcode.com/gh_mirrors/ve/vectorscan Vectorscan 是 Intel 高性…

作者头像 李华