Re: [請益] 討論區中的id問題
※ 引述《rexkimta (冷杉林)》之銘言:
: 最近正在練習性的寫一個討論區,
: 我的作法是每篇文章給一個id,
: 一開始id是用自動編號(auto_increment),
: 可是後來想想如果有文章被刪掉了,
: 它的id就會一直空在那邊,感覺很奇怪,
: 我就想到了youtube為每個影片編號的方法,
: (像這樣:atch?v=57MbUI_uvps)
: 請問有沒有推薦的函式庫?
: ps:我有看過hash,可是它產生的字串都長的不像話= =
剛剛寫好的破爛程式就送給你吧 !
<?php
function make_id($length)
{
if (!isset($length))
{
return;
}
//避免輸入字串等等變數型態直接進入函式
if ((int) $length == 0)
{
return;
}
//可以自己加入ID可支援的文字
$type = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a',
'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u', 'v', 'w', 'x', 'y', 'z', '-', '_');
$id = '';
while(1)
{
//創出長度為$length值的ID
for ($i = 0; $i < $length; $i++)
{
$rnd_key = rand(0, count($type) - 1);
$id .= $type[$rnd_key];
}
//避免ID重複
//重複機率是 count($type) 的 $length 次方分之一
//亦即你資料庫可以分配的ID有 count($type) 的 $length 次方個
//之後就陷入無窮迴圈,老實說這程式寫得很差@@"
if (!id_existed($id)) //函式自己寫ˊˇˋ
{
break;
}
}
return $id;
}
//用法就這樣吧 ! YouTube ID 好像長度都是 11
$youtube_like_id = make_id(11);
?>
P.S. id_existed() 函式一定要自己寫哦 ! 不然會出錯或者陷入無窮迴圈(?)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.228.89.76
→
08/16 14:49, , 1F
08/16 14:49, 1F
推
08/16 17:44, , 2F
08/16 17:44, 2F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章