2011-07-23 63 views
1

我已經多次閱讀this tutorial,最後,我完成了創建自己的唯一ID,如Youtube。生成像Youtube的播放列表一樣的唯一ID - PHP

但我不能找出如何創造這種獨特的ID:

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

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

我該如何創建這種使用PHP的唯一ID?我的數據庫使用了自動增量式PRIMARY KEY。

謝謝。

回答

0

試試這個:

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

那麼顯然檢查數據源,以查看是否值是唯一的。

+0

散列值並不能保證唯一性。 – Gumbo

+1

這是非常真實的,這是一個快速和骯髒的解決方案,因此我建議檢查唯一性的價值。 –

+0

如果我們使用md5,則字符串太長,無法解碼爲像這樣的數字http://kevin.vanzonneveld.net/techblog/article/create_short_ids_with_php_like_youtube_or_tinyurl/。有沒有其他的方法? – redstrike

3

PHP爲此具有uniqid()函數。通過它的前綴作爲其第一個參數:

$id = uniqid("PL"); 

// PL4e2b26588bec0 

如果需要爲安全目的,也有PHP文檔頁面上討論了更好的選擇。

+0

我知道這個功能,但我想創建一個ID可以解碼爲像這樣一個數字http://kevin.vanzonneveld.net/techblog/article/create_short_ids_with_php_like_youtube_or_tinyurl/。有沒有辦法做到這一點? – redstrike

+0

爲什麼需要它解碼到一個數字?您只需將其存儲爲數據庫中的一列,並將其映射到自動遞增的主鍵。這些都是十六進制字符,所以你可以在剝去前綴後使用'hexdec()'來創建一個十進制數。 –

+0

謝謝你的回答,邁克爾!這對我來說非常有用。 – redstrike