【问题标题】:Generate a UNIQUE ID like Youtube's Playlist - PHP生成像 Youtube 的播放列表一样的唯一 ID - PHP
【发布时间】:2011-07-23 19:22:30
【问题描述】:

我看了this tutorial很多遍,终于完成了创建自己独特的ID,比如Youtube。

但我不知道如何创建这种唯一 ID:

http://www.youtube.com/playlist?list=PL124C2FA58C814231

一些例子:
E5DBC5AD85E952BF
F26D47E15E785137
4DE9165CE24633D0
26B44580D7ECDCD3
--- 带前缀 PL --
PL3F16C0AE0309BB56
PL124C2FA58C814231

如何使用 PHP 创建那种唯一的 id?我的数据库使用了自动增量 PRIMARY KEY。

谢谢。

【问题讨论】:

    标签: php youtube unique url-shortener


    【解决方案1】:

    为此,PHP 有一个uniqid() 函数。将前缀作为第一个参数传递给它:

    $id = uniqid("PL");
    
    // PL4e2b26588bec0
    

    如果出于安全目的需要这样做,可以在 PHP 文档页面上讨论更好的选项。

    【讨论】:

    • 我知道这个功能,但我想创建一个可以解码为类似kevin.vanzonneveld.net/techblog/article/… 的数字的 ID。有没有办法做到这一点?
    • 为什么需要解码成数字?您只需将其作为一列存储在数据库中,该列映射到自动递增的主键。这些都是十六进制字符,所以你可以在去掉前缀后使用hexdec()来制作一个十进制数。
    • 谢谢你的回答,迈克尔!这对我很有用。
    【解决方案2】:

    试试这个:

    echo 'PL' . strtoupper(md5(time()));
    

    然后显然检查您的数据源以查看该值是否唯一。

    【讨论】:

    • 这是真的,这是一个快速而肮脏的解决方案,因此我建议检查唯一性的值。
    • 如果我们使用md5,字符串太长,无法解码为kevin.vanzonneveld.net/techblog/article/…这样的数字。还有其他方法吗?
    • 是的 - 使用您提供的链接中的 Kevin 脚本。
    • 我尝试了很多方法来调整脚本,但它无法生成这样的 16 字符 ID: E5DBC5AD85E952BF 。该脚本在限制和 11 个字符方面存在问题。
    • 为什么有 16 个字符很重要?
    猜你喜欢
    • 2013-02-16
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多