php中使用uniqid mt_rand 生成随机不重复字符串的方法

作者:袖梨 2022-06-24

方法一:

<?PHP
     $str = uniqid(mt_rand(),1);
     echo 'sha1: ',sha1($str);
     echo '
';      echo 'MD5: ',md5($str);


采用uniqid函数,配合mt_rand随机函数,最后使用散列值得出最终唯一值。


但是通过测试中,发现随机数的唯一性有些相同部分,大概有11位相同的(但无大碍)

 

第二种方法:GUID

<?PHP

 

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

     echo "
";      echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));      echo "
";      echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));      echo "
";      echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));    ?>


例子3

<?php
//使用uniqid mt_rand 生成随机不重复字符串的方法
$snKeys=array();
$total=10;//设置生成数量
$prefix='code';//字符串前缀
while(count($snKeys) < $total) {
     $snKeys[$prefix . md5(uniqid(mt_rand(), true))] = null;
}
print_r($snKeys);


 

相关文章

精彩推荐