guanhui07/sqids

从数字生成类似YouTube的短ID

0.5.0 2024-09-23 08:42 UTC

This package is auto-updated.

Last update: 2024-09-23 08:43:04 UTC


README

Latest Version Build Status Monthly Downloads

Sqids (发音为 "squids") 是一个小的库,允许您从数字生成唯一的ID。它适合链接缩短、快速且URL安全的ID生成以及快速将ID解码回数字进行数据库查找。

特性

  • 编码多个数字 - 从一个或多个非负数字生成短ID
  • 快速解码 - 容易将ID解码回数字
  • 唯一ID - 通过一次打乱字母表生成唯一ID
  • ID填充 - 提供最小长度以使ID更加统一
  • URL安全 - 自动生成的ID不包含常见粗俗语
  • 随机输出 - 顺序输入提供非连续ID
  • 多种实现 - 支持40多种编程语言

🧰 用例

适用于

  • 生成公开URL的ID(例如:链接缩短)
  • 生成内部系统的ID(例如:事件跟踪)
  • 解码以加快数据库查找(例如:通过主键)

不适用于

  • 敏感数据(这不是一个加密库)
  • 用户ID(可以被解码显示用户数量)

🚀 开始使用

使用Composer在项目的根目录中安装此包。

composer require guanhui07/sqids

然后您可以将类导入到您的应用程序中

use Sqids\Sqids;
$sqids = new Sqids();

重要

Sqids需要bcmathgmp扩展才能运行。

👩‍💻 示例

简单的编码和解码

$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]

📝 许可证

MIT