生成随机 5 个字符的字符串

时间:2023-01-04
本文介绍了生成随机 5 个字符的字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想创建精确的 5 个随机字符串,并且复制的可能性最小.最好的方法是什么?谢谢.

I want to create exact 5 random characters string with least possibility of getting duplicated. What would be the best way to do it? Thanks.

推荐答案

$rand = substr(md5(microtime()),rand(0,26),5);

这可能是我最好的猜测——除非您也在寻找特殊字符:

Would be my best guess--Unless you're looking for special characters, too:

$seed = str_split('abcdefghijklmnopqrstuvwxyz'
                 .'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
                 .'0123456789!@#$%^&*()'); // and any other characters
shuffle($seed); // probably optional since array_is randomized; this may be redundant
$rand = '';
foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];

示例

而且,对于基于时钟的一个(因为它是增量的,所以冲突更少):

And, for one based on the clock (fewer collisions since it's incremental):

function incrementalHash($len = 5){
  $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  $base = strlen($charset);
  $result = '';

  $now = explode(' ', microtime())[1];
  while ($now >= $base){
    $i = $now % $base;
    $result = $charset[$i] . $result;
    $now /= $base;
  }
  return substr($result, -5);
}

注意:增量意味着更容易猜测;如果您将其用作盐或验证令牌,请不要使用.WCWyb"的盐(现在)意味着 5 秒后它是WCWyg")

这篇关于生成随机 5 个字符的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

上一篇:CakePHP - 如何使用 slug 进行反向路由? 下一篇:如何在 PHP 中生成随机 64 位值作为十进制字符串

相关文章

最新文章