sqids / sqids
将数字生成类似YouTube的短ID
0.4.1
2023-09-12 22:30 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpunit/phpunit: ^10.3
Suggests
- ext-bcmath: Required to use BC Math arbitrary precision mathematics (*).
- ext-gmp: Required to use GNU multiple precision mathematics (*).
This package is auto-updated.
Last update: 2024-09-22 06:40:39 UTC
README
Sqids (发音为 "squids") 是一个小的库,允许您从数字生成唯一ID。它适用于链接缩短、快速和URL安全的ID生成以及解码回数字以便更快地进行数据库查找。
功能
- 编码多个数字 - 从一个或多个非负数字生成短ID
- 快速解码 - 容易将ID解码回数字
- 唯一ID - 通过重新排列字母表一次生成唯一ID
- ID填充 - 提供最小长度以使ID更加统一
- URL安全 - 自动生成的ID不包含常见的脏话
- 随机输出 - 顺序输入提供非连续ID
- 多种实现 - 支持超过40种编程语言
🧰 用例
适用于
- 生成公开URL的ID(例如:链接缩短)
- 生成内部系统的ID(例如:事件跟踪)
- 解码以加快数据库查找(例如:通过主键)
不适用于
- 敏感数据(这不是一个加密库)
- 用户ID(可以解码,显示用户数量)
🚀 开始使用
在项目的根目录中,使用Composer安装此包。
composer require sqids/sqids
然后您可以将类导入到您的应用程序中
use Sqids\Sqids; $sqids = new Sqids();
重要
👩💻 示例
简单的编码和解码
$sqids = new Sqids(); $id = $sqids->encode([1, 2, 3]); // "86Rf07" $numbers = $sqids->decode($id); // [1, 2, 3]
注意
🚧 由于算法的设计,多个ID可以解码回相同的数字序列。如果您的设计中ID必须是规范化的,您必须手动重新编码解码的数字并检查生成的ID是否匹配。
为ID强制执行最小长度
$sqids = new Sqids(minLength: 10); $id = $sqids->encode([1, 2, 3]); // "86Rf07xd4z" $numbers = $sqids->decode($id); // [1, 2, 3]
通过提供自定义字母表来随机化ID
$sqids = new Sqids(alphabet: 'FxnXM1kBN6cuhsAvjW3Co7l2RePyY8DwaU04Tzt9fHQrqSVKdpimLGIJOgb5ZE'); $id = $sqids->encode([1, 2, 3]); // "B4aajs" $numbers = $sqids->decode($id); // [1, 2, 3]
防止在自动生成的ID中出现特定的单词
$sqids = new Sqids(blocklist: ['86Rf07']); $id = $sqids->encode([1, 2, 3]); // "se8ojk" $numbers = $sqids->decode($id); // [1, 2, 3]