php 中的短唯一 ID

2024-04-01

我想创建一个唯一的 ID,但是uniqid()正在给予类似的东西'492607b0ee414'。我想要的是类似于tinyurl给出的东西:'64k8ra'。越短越好。唯一的要求是它不应该有明显的顺序,并且它应该看起来比看似随机的数字序列更漂亮。字母优先于数字,并且最好不要混合大小写。由于条目数量不会那么多(最多 10000 个左右),因此碰撞风险并不是一个大因素。

任何建议表示赞赏。


创建一个返回给定长度的随机字母的小函数:

<?php
function generate_random_letters($length) {
    $random = '';
    for ($i = 0; $i < $length; $i++) {
        $random .= chr(rand(ord('a'), ord('z')));
    }
    return $random;
}

然后,您需要调用它,直到它是唯一的,以伪代码形式,具体取决于您存储该信息的位置:

do {
    $unique = generate_random_letters(6);
} while (is_in_table($unique));
add_to_table($unique);

您可能还想确保这些字母不会在字典中形成单词。可能是整本英语词典,也可能只是一本脏词词典,以避免顾客觉得内容不好。

编辑:我还想补充一点,只有当您打算使用它时,它不适用于大量项目,因为您获得的碰撞越多,这可能会变得非常慢(在表中已经获得一个ID)。当然,您需要一个索引表,并且需要调整 ID 中的字母数量以避免冲突。在本例中,如果有 6 个字母,则您将拥有 26^6 = 308915776 个可能的唯一 ID(减去坏词),这应该足以满足您 10000 个的需求。

编辑: 如果您想要字母和数字的组合,可以使用以下代码:

$random .= rand(0, 1) ? rand(0, 9) : chr(rand(ord('a'), ord('z')));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php 中的短唯一 ID 的相关文章

  • php 中接口的用途是什么?

    如果我在 PHP 中定义一个接口 以及一个创建该接口实例的工厂类 有什么方法可以强制客户端代码仅使用该接口而不使用底层具体类 根据我的理解 客户也可以实际使用底层类中的任何公共函数 字段 这是一个例子
  • 通过API更新Twitter背景

    我在通过 Twitter 的 API 更新背景时遇到了一些问题 target url http www google com logos 11th birthday gif ch curl init curl setopt ch CURLO
  • 附加之前检查数据库中是否存在 ID

    我通过选择一个带有类别的数组json decode并将它们附加到文章中 public static function setArticleCategory Request request article Article where id r
  • Google Analytics PHP(发送信息)

    大意 我正在开发一个项目 我需要使用 Google Analytics 服务器端 我不需要检索信息 但我需要发送信息 我最终可以发送 js 脚本客户端 但在这种情况下它不是一个选项 以下大多数链接都非常旧 2012年 检索 不是我需要的 我
  • WordPress 计划事件未在设定时间触发

    在 WordPress 中 我正在创建一个插件 用于向用户发送电子邮件 为此 我使用 WordPresscron工作 所以基本上它要做的就是每小时向用户发送电子邮件 所以我的代码看起来像这样 public function construc
  • 通过 AJAX jquery 更改表格背景颜色?

    设想 当我的网页加载时 自动搜索单元格已由用户输入并且具有价值 如果已输入 表格背景颜色将为红色 否则为绿色 假设该表尚未输入 桌子背景绿色是这样的 和表的源代码 table width 1023 height 200 border 1 t
  • 无法使用 PHP ftp_connect() 连接 FTP 服务器

    我试图使用 PHP 的 ftp connect 函数连接 ftp 服务器 如下所示 但它返回这个错误 警告 ftp connect function ftp connect php network getaddresses getaddri
  • 上传非常大的文件(>5GB)

    我需要你的帮助 我想用 HTML JQuery 和 PHP 创建一个上传脚本 是否可以编写一个可以上传非常大的文件 gt 5 GB 的脚本 我已经尝试使用 FileReader FormData 和 Blobs 但即使使用这些 我也无法上传
  • PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句的行为不同

    I have form store sql INSERT INTO myodyssey myaccount id email username password VALUES NULL email unixmiah formtest woo
  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • 使用ajax发送表单数据

    我想用 ajax 以表单形式发送所有输入 我有一个这样的表单
  • 某些表格后的分页符

    我的问题是 我有一个页面 其中包含几个要打印的 html 表格 有些表有很多行 有些则没有 我想要做的是将第一个和第二个表 大表 打印在单独的页面中 其余表 小表 每页打印两个 如何在我想要的位置放置分页符 我试过 但这会在每个表格后面添加
  • fsockopen() 和 SSL 出错,“无法启用加密”

    我正在尝试连接到 Nominet EPP 测试台 但收到 无法启用加密 的消息 这似乎是一个罕见的错误 没有记录的解决方案或原因 用行 socket fsockopen ssl testbed epp nominet org uk 700
  • 需要一个正则表达式将 css 类添加到第一个和最后一个列表项

    更新 谢谢大家的意见 一些附加信息 它实际上只是我正在使用的一小部分标记 20 行 目的是利用正则表达式来完成工作 我还能够修改脚本 电子商务脚本 以在构建导航时插入类 我想限制我所采用的黑客数量 以便在更新到软件的最新版本时让事情变得更容
  • 为什么 http://localhost/ 不使用 WAMP 加载任何内容?

    我最近尝试安装 WAMP 但发现没有页面加载 它还有一个橙色的 W 标志 如果这有什么意义的话 它确实说 托盘图标 WAMP服务器已上线尽管 我也做了一些研究 发现 Skype 可能会引起问题 所以我删除了使用端口 80 和 443 作为传
  • 如何从 jquery .load 获取 php 响应

    例如我给出另一个代码 这是我的 some3 php 代码 第一个文件
  • CMS:将自定义页面存储为文件或 MySQL 数据库中?

    我正在 PHP 中创建一个自定义 CMS 从头开始编写 并且想知道是否应该将用户创建的页面存储为文件或存储在 MySQL 数据库中 内容全部是 HTML 代码 至少目前是这样 我无法决定该做什么 因为用 php 编写文件似乎存在安全风险 并
  • 重定向到另一个文件夹

    我读了这个 htaccess 重写以将根 URL 重定向到子目录 https stackoverflow com questions 990392 htacces rewrite to redirect root url to subdir
  • 正则表达式:如何表达没有下划线的 \w

    有没有简洁的表达方式 w but without 即 w 中包含的所有字符 除了 我问这个是因为我正在寻找最简洁的方式来表达域名验证 域名可以包含小写和大写字母 数字 句号和破折号 但不能包含下划线 w 包括以上所有内容 加上下划线 那么
  • 如何在刀片模板中通过引用 @include 来传递变量?

    在 Laravel 4 2 设置中 我在模板中有一个变量 我希望在多个包含之间共享该变量 主刀 This is the variable include header lt in header blade I often use tabin

随机推荐

  • 如何才能更准确地计算 PI?

    我应该使用 1 到 30 之间的数字通过下面的公式来计算 pi Picture https i stack imgur com fYtUE png 这是我到目前为止所做的 int k outside 0 double inside 0 co
  • IDE 可以使用 Maven 解析 Java 中的 Scala 类吗?

    我有一个混合 Java 和 Scala 源的项目 按照以下说明进行操作这一页 http scala tools org mvnsites maven scala plugin usage html 它在从命令行运行 Maven 时有效 然而
  • Firestore:用其内容填充 ids 数组的最佳方法是什么?

    我有包含用户 ID 的对象数组 const userIDs key user 1 key user 2 key user 3 我想用 cloud firestore 中的用户数据填充它 const userIDs key user 1 na
  • 在 SQL Server 2005 中授予对 2 个表的只读访问权限的最佳方法?

    向少数用户授予对 SQL Server 2005 数据库中几个表的访问权限的最佳方法是什么 我知道文献推动了视图的使用 但是授予对实际表的只读访问权限有什么好处 至少对于表来说 开销会更少 因为索引和其他限制已经就位并在表中进行管理 单点维
  • 如何使用 jQuery 附加 HTML

    我正在使用构建一个 HTML 元素 this html my html here 我需要使用不同的 CSS 在这里添加许多元素 所以我想要的是我应该能够在此处附加另一个 HTML this html my html here this ht
  • ObjC: +[NSObject isSubclassOfClass:] 给出不正确的失败

    我有一个 iOS 静态库 它定义了NSOperation客户端应该子类化以添加自己的逻辑的基类 interface BaseClass NSOperation 客户向管理器注册他们的子类 OperationManagerClass regi
  • 按组排列的 NA 计数[重复]

    这个问题在这里已经有答案了 我知道 R 中的以下语法将按变量给出 NA 的计数 如何通过分组变量对此进行分层 na count lt sapply x function y sum length which is na y 我们可以用agg
  • 如何验证 Azure 虚拟机 RDP 证书?

    我的虚拟机的 RDP 证书指纹由于某种原因发生了更改 有没有办法在 Azure 中验证新的证书指纹 类型 虚拟机 经典 计算机 Basic A3 操作系统 Windows Server Azure 中有可用的启动诊断日志 在启动虚拟机时默认
  • Iexpress - 提取路径

    我要创建一个自解压存档 但在连接默认解压路径时遇到问题 我想在与自解压存档程序相同的路径中解压我的文件 不幸的是 这些文件正在另一个路径中提取 C Users computer AppData Temp IXP000 TMP 可以设置路径吗
  • 应用程序无法打开,因为它来自身份不明的开发者

    我昨天安装了 Mac OS X Mavericks 10 9 从那时起我无法启动 Eclipse 我附上我看到的消息的屏幕截图 有解决方法吗 我找到了一个解决方案修复 Mac OS X 中的 应用程序无法打开 因为它来自身份不明的开发者 错
  • 如何使用 GitPython 拉取远程存储库?

    我正在尝试找到使用 gitPython 提取 git 存储库的方法 到目前为止 这是我从官方文档中获取的内容here http gitpython readthedocs org en latest tutorial html handli
  • Android File.exists() 不区分大小写吗?

    我创建了一个新文件夹 sdcard dd by File album new File albumPath if album exists Log d TAG albumPath already exists else boolean bF
  • OS X 上带有 fat 库的架构 x86_64 的未定义符号

    我已经建立了libcrypto a and libssl a我自己从来源处指定darwin64 x86 64 cc 对于 64 位 和darwin i386 cc 对于 32 位 至OpenSSL的配置脚本 创建了脂肪库lipo并将它们添加
  • 难道静态成员不会使类本身成为(全局)对象吗?

    每当我遇到单例模式或任何静态类 即 几乎 仅具有静态成员的类 的实现时 我想知道这是否实际上是一种黑客行为 因此严重滥用了类和实例的原则只是为了设计单个对象而不是设计类并创建单个实例 对我来说 看起来类的静态成员通常会尝试向类添加某种它们实
  • 套接字附加程序 - 基本示例一步一步[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • React router Link 标签的 target="_blank" 上的不同路由渲染

    即使链接将 to 属性设置为正确的路线 但单击时也不会加载 React router 中的另一条路由被加载到它的位置 这是代码 App js const isLoggedIn setIsLoggedIn React useState fal
  • 从距离矩阵开始查找 K 个最近邻

    我正在寻找一个接受良好优化的函数n X n距离矩阵并返回n X k矩阵的索引k第 i 行中第 i 个数据点的最近邻居 我发现了无数的不同R可以让您执行 KNN 的软件包 但它们似乎都在同一函数中包含距离计算和排序算法 特别是 对于大多数例程
  • 可以直接使用程序集访问缓存吗?

    就效率而言 缓存是一个核心问题 我知道缓存通常会自动发生 但是 我想自己控制缓存的使用 因为我认为我可以比一些不知道确切程序的启发式方法做得更好 因此 我需要汇编指令来直接移入或移出高速缓存单元 like movL1 address con
  • java中的HttpClient [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想使用一个简单的 HttpClient 然而 看来sun net www http HttpClien
  • php 中的短唯一 ID

    我想创建一个唯一的 ID 但是uniqid 正在给予类似的东西 492607b0ee414 我想要的是类似于tinyurl给出的东西 64k8ra 越短越好 唯一的要求是它不应该有明显的顺序 并且它应该看起来比看似随机的数字序列更漂亮 字母