首页 > 开发 > PHP > 正文

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

2024-05-04 22:00:36
字体:
来源:转载
供稿:网友

本文章来为各位介绍一篇关于php中使用uniqid mt_rand 生成随机不重复字符串的几种方法,希望文章能够对各位有用。

方法一:

<?PHP
     $str = uniqid(mt_rand(),1);
     echo 'sha1: ',sha1($str);
     echo '<br>';
     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 "<br>";
 
     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 "<br>";
 
     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 "<br>";
 
     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);

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表