php随机获取一行文本,一行PHP随机字符串生成器?
而不是改寫字母表字符串,它是更快得到一個(gè)單一的隨機(jī)字符。
從字符串中獲取一個(gè)隨機(jī)字符,然后將md5(time())附加到它。在添加md5(time())之前,從其中刪除一個(gè)字符,以便將生成的字符串長(zhǎng)度保持為32個(gè)字符:
substr( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ,mt_rand( 0 ,51 ) ,1 ) .substr( md5( time() ), 1)
小寫版本:
substr( "abcdefghijklmnopqrstuvwxyz" ,mt_rand( 0 ,25 ) ,1 ) .substr( md5( time( ) ) ,1 )
或者甚至更短和一點(diǎn)點(diǎn)更快的小寫版本:
chr( mt_rand( 97 ,122 ) ) .substr( md5( time( ) ) ,1 )
/* or */
chr( mt_rand( ord( 'a' ) ,ord( 'z' ) ) ) .substr( md5( time( ) ) ,1 )
對(duì)任何試圖在一秒鐘內(nèi)生成許多隨機(jī)字符串的任何人的注釋:由于time()以秒為單位返回時(shí)間,md5(time())將在給定的第二次時(shí)間是相同的,因?yàn)槿绻S多隨機(jī)字符串第二次,那些可能最終有一些重復(fù)。
我已經(jīng)測(cè)試使用下面的代碼。這測(cè)試小寫版本:
$num_of_tests = 100000;
$correct = $incorrect = 0;
for( $i = 0; $i < $num_of_tests; $i++ )
{
$rand_str = substr( "abcdefghijklmnopqrstuvwxyz" ,mt_rand( 0 ,25 ) ,1 ) .substr( md5( time( ) ) ,1 );
$first_char_of_rand_str = substr( $rand_str ,0 ,1 );
if( ord( $first_char_of_rand_str ) < ord( 'a' ) or ord( $first_char_of_rand_str ) > ord( 'z' ) )
{
$incorrect++;
echo $rand_str ,'
';
}
else
{
$correct++;
}
}
echo 'Correct: ' ,$correct ,' . Incorrect: ' ,$incorrect ,' . Total: ' ,( $correct + $incorrect );
總結(jié)
以上是生活随笔為你收集整理的php随机获取一行文本,一行PHP随机字符串生成器?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android热修复技术原理中的代码热修
- 下一篇: 微信公众号支付php demo,200行