laoqianjunzi/mobile
最新稳定版本:v2
Composer 安装命令:
composer require laoqianjunzi/mobile
包简介
PHP implementation of phone number location query library
README 文档
README
特性
- 纯PHP实现,无需扩展
- 高性能二分查找算法
- 与Go版本完全兼容的数据格式
- 支持所有中国电信运营商
- 简单易用的API
安装
- 下载本项目到你的PHP项目中
- 确保
phone.dat数据文件与Location.php在同一目录下 - 或者通过环境变量
PHONE_DATA_DIR指定数据文件目录
快速开始
基本使用
require_once 'Location.php';
// 创建Location实例
$phoneData = new Location();
// 查询手机号归属地
try {
$result = $phoneData->find('18957509123');
print_r($result);
} catch (Exception $e) {
echo "错误: " . $e->getMessage();
}
// 输出格式化的字符串
try {
echo $phoneData->findString('18957509123');
} catch (Exception $e) {
echo "错误: " . $e->getMessage();
}
输出示例
Array
(
[phoneNum] => 18957509123
[province] => 浙江
[city] => 绍兴
[zipCode] => 312000
[areaZone] => 0575
[cardType] => 中国电信
)
或者:
PhoneNum: 18957509123
AreaZone: 0575
CardType: 中国电信
City: 绍兴
ZipCode: 312000
Province: 浙江
API文档
构造函数
new Location(string $dataDir = null)
创建Location实例。
参数:
$dataDir(string|null): 数据文件目录,如果为null则使用环境变量PHONE_DATA_DIR或默认目录
实例方法
find(string $phoneNum): array
查找手机号归属地信息。
参数:
$phoneNum(string): 手机号码(7-11位)
返回值:
- 包含以下键的数组:
phoneNum: 手机号码province: 省份city: 城市zipCode: 邮编areaZone: 长途区号cardType: 运营商类型
异常:
InvalidArgumentException: 手机号格式错误RuntimeException: 找不到手机号信息或数据文件错误
findString(string $phoneNum): string
查找手机号归属地信息并返回格式化的字符串。
参数:
$phoneNum(string): 手机号码(7-11位)
返回值:
- 格式化的字符串(与Go版本输出格式相同)
findBatch(array $phoneNumbers): array
批量查询手机号归属地信息。
参数:
$phoneNumbers(array): 手机号码数组
返回值:
- 包含两个键的数组:
success: 成功查询的结果数组failed: 失败查询的错误信息数组
debug(): void
输出调试信息,包括版本号、总记录数和第一个记录偏移量。
version(): string
获取数据文件版本号。
totalRecord(): int
获取总记录数。
firstRecordOffset(): int
获取第一个记录的偏移量。
getInfo(): array
获取数据文件信息。
返回值:
- 包含以下键的数组:
version: 数据文件版本totalRecords: 总记录数firstOffset: 第一个记录偏移量fileSize: 文件大小dataDir: 数据文件目录
数据文件格式
文件结构
| 4 bytes | <- 版本号(如:1701即17年1月份)
------------
| 4 bytes | <- 第一个索引的偏移
-----------------------
| offset - 8 | <- 记录区
-----------------------
| index | <- 索引区
-----------------------
记录区格式
每条记录的格式为:"<省份>|<城市>|<邮编>|<长途区号>\0"
索引区格式
每条索引的格式为:"<手机号前七位><记录区的偏移><卡类型>",每个索引的长度为9个字节。
卡类型映射
| 值 | 常量 | 说明 |
|---|---|---|
| 0x01 | CMCC | 中国移动 |
| 0x02 | CUCC | 中国联通 |
| 0x03 | CTCC | 中国电信 |
| 0x04 | CTCC_V | 电信虚拟运营商 |
| 0x05 | CUCC_V | 联通虚拟运营商 |
| 0x06 | CMCC_V | 移动虚拟运营商 |
| 0x07 | CBCC | 中国广电 |
| 0x08 | CBCC_V | 广电虚拟运营商 |
性能
PHP版本使用与Go版本相同的二分查找算法,性能优秀。在普通服务器上,单次查询通常在0.1-0.5毫秒内完成。
注意事项
- 确保
phone.dat文件具有读取权限 - 手机号长度必须在7-11位之间
- 数据文件需要定期更新以获取最新的号段信息
- 在生产环境使用前请自行测试验证
laoqianjunzi/mobile 适用场景与选型建议
laoqianjunzi/mobile 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 03 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「mobile」 「phone」 「location」 「China」 「telecom」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 laoqianjunzi/mobile 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 laoqianjunzi/mobile 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 laoqianjunzi/mobile 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Phone helper & validator for Nette Framework
Beyonic PHP Library
Yii2 phone formatter and validator.
The official PHP library for apiip.net that allowing customers to automate IP address validation and geolocation lookup in websites, applications and back-office system. Visit our API docs at https://apiip.net/documentation
A Symfony2 Bundle to handle geographic location of your entities
The skeleton application for NativePHP for Mobile.
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 24
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-18