我想从一个唯一的 24 个字符的字符串中获取一个 8 个字符的字符串,以便制作一个缩短的 URL。 8 个字符的字符串必须基于唯一的 24 个字符的字符串。如果我随机生成一个 8 个字符的字符串,则必须进行数据库查找以查看它是否尚未被占用。另外,我不想使用 24 个字符串的前 8 个字符或后 8 个字符。这 24 个字符是 MongoDB 对象 ID。谢谢。
最佳答案
8 个太少了。
以下是如何从 24 中得到 16:
$id = '507f191e810c19729de860ea';
$str = base64_encode(implode('', array_map(function($c) { return chr(hexdec($c)); }, str_split($id, 2))));
var_dump($str); // UH8ZHoEMGXKd6GDq
对于较少的字符,您需要更大的字符库,但问题是 - 没有剩下的安全网址。
关于php - 如何从 24 个字符的字符串中获取唯一的 8 个字符的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15146811/