萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php中使用uniqid mt_rand 生成隨機不重復字符串的方法

php中使用uniqid mt_rand 生成隨機不重復字符串的方法

本文章來為各位介紹一篇關於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);


 

copyright © 萬盛學電腦網 all rights reserved