Nếu có thể, tôi muốn khuyên không sử dụng băm cho các URL của bạn. Cuối cùng, bạn sẽ gặp phải xung đột ... đặc biệt nếu bạn cắt xén băm. Nếu bạn tiếp tục và triển khai một hệ thống dựa trên id trong đó mỗi mục có một ID duy nhất, sẽ có ít đau đầu hơn rất nhiều. Mục đầu tiên sẽ là 1
, mục thứ hai sẽ là 2
, v.v ... nếu bạn đang sử dụng MySQL, chỉ cần ném vào cột tự động.
Để thực hiện một id ngắn:
//the basic example
$sid = base_convert($id, 10, 36);
//if you're going to be needing 64 bit numbers converted
//on a 32 bit machine, use this instead
$sid = gmp_strval(gmp_init($id, 10), 36);
Để thực hiện một id ngắn trở lại vào cơ số 10 id:
//the basic example
$id = base_convert($id, 36, 10);
//if you're going to be needing 64 bit numbers
//on a 32 bit machine, use this instead
$id = gmp_strval(gmp_init($shortid, 36));
Hope this helps!
Nếu bạn đang thực sự muốn cơ sở 62 (mà không thể được thực hiện với gmp
hoặc base_convert
), kiểm tra này: http://snipplr.com/view/22246/base62-encode--decode/
hàm băm md5 không phải là số, vì vậy bạn có ý nghĩa gì bởi "một phần của số"? –
md5 là một số được trình bày trong mã hóa base36 mà tôi nghĩ ... – Mark
Bạn là một nửa phải, băm md5 là một số hex được trình bày trong cơ số 16 (a-f0-9). –