ホームページ  >  記事  >  バックエンド開発  >  PHP でランダムな文字列を生成する 3 つの方法

PHP でランダムな文字列を生成する 3 つの方法

墨辰丷
墨辰丷オリジナル
2018-06-07 11:17:359514ブラウズ

この記事では、PHP でランダムな文字列を生成する 3 つの方法を主に紹介します。興味のある方はぜひ参考にしてください。

方法 1

1. 33 ~ 126 のランダムな整数 (例: 35) を生成します。

2. 35 を対応する ASCII コード文字に変換します (# に対応する 35 など)。

3. 上記の手順 1 と 2 を n 回繰り返し、n 桁のパスワードに接続します。

このアルゴリズムは主に 2 つの関数を使用します。 mt_rand (int $min, int $max) 関数は、ランダムな整数を生成するために使用されます。ここで、$min – $max は、ASCII コードの範囲であり、これは 33 ~ 126 です。必要に応じて調整できます。たとえば、ASCII コード表の 97 ~ 122 ビットは、英語の文字 a ~ z に対応します。詳細については、chr (int $ascii) 関数が使用されます。対応する整数 $ascii を対応する文字に変換します。

function create_password($pw_length =  
{ 
$randpwd = ”; 
for ($i = 0; $i < $pw_length; $i++) 
{ 
$randpwd .= chr(mt_rand(33, 126)); 
} 
return $randpwd; 
} 
// 调用该函数,传递长度参数$pw_length = 6 
echo create_password(6);

方法 2

1. a – z、A – Z、0 – 9、およびいくつかの特殊文字を含む文字列 $chars を事前に設定します。

2. $chars 文字列からランダムな文字を選択します。

3. 2 番目のステップを n 回繰り返して、長さ n のパスワードを取得します。

function generate_password( $length = 8 ) { 
// 密码字符集,可任意添加你需要的字符 
$chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|&#39;; 
$password = ”; 
for ( $i = 0; $i < $length; $i++ ) 
{ 
// 这里提供两种字符获取方式 
// 第一种是使用 substr 截取$chars中的任意一位字符; 
// 第二种是取字符数组 $chars 的任意元素 
// $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1); 
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ]; 
} 
return $password; 
}

方法 3

1. a – z、A – Z、0 – 9、およびいくつかの特殊文字を含む文字配列 $chars をプリセットします。

2. array_rand() を使用して、配列 $chars から $length 要素をランダムに選択します。

3. 取得したキー名配列$keysに従って、配列$charsから文字を取り出して文字列を連結します。この方法の欠点は、同じ文字が繰り返し取得されないことです。

function make_password( $length = 8 ) 
{ 
 
// 密码字符集,可任意添加你需要的字符 
$chars = array(‘a&#39;, ‘b&#39;, ‘c&#39;, ‘d&#39;, ‘e&#39;, ‘f&#39;, ‘g&#39;, ‘h&#39;, 
‘i&#39;, ‘j&#39;, ‘k&#39;, ‘l&#39;,&#39;m&#39;, ‘n&#39;, ‘o&#39;, ‘p&#39;, ‘q&#39;, ‘r&#39;, &#39;s&#39;, 
‘t&#39;, ‘u&#39;, ‘v&#39;, ‘w&#39;, ‘x&#39;, ‘y&#39;,&#39;z&#39;, ‘A&#39;, ‘B&#39;, ‘C&#39;, ‘D&#39;, 
‘E&#39;, ‘F&#39;, ‘G&#39;, ‘H&#39;, ‘I&#39;, ‘J&#39;, ‘K&#39;, ‘L&#39;,&#39;M&#39;, ‘N&#39;, ‘O&#39;, 
‘P&#39;, ‘Q&#39;, ‘R&#39;, ‘S&#39;, ‘T&#39;, ‘U&#39;, ‘V&#39;, ‘W&#39;, ‘X&#39;, ‘Y&#39;,&#39;Z&#39;, 
‘0′, ‘1′, ‘2′, ‘3′, ‘4′, ‘5′, ‘6′, ‘7′, ‘8′, ‘9′, ‘!&#39;, 
‘@&#39;,&#39;#&#39;, ‘$&#39;, ‘%&#39;, ‘^&#39;, ‘&&#39;, ‘*&#39;, ‘(‘, ‘)&#39;, ‘-&#39;, ‘_&#39;, 
‘[&#39;, &#39;]‘, ‘{‘, ‘}&#39;, ‘<&#39;, ‘>&#39;, ‘~&#39;, ‘`&#39;, ‘+&#39;, ‘=&#39;, ‘,&#39;, 
‘.&#39;, ‘;&#39;, ‘:&#39;, ‘/&#39;, ‘?&#39;, ‘|&#39;); 
 
// 在 $chars 中随机取 $length 个数组元素键名 
$keys = ($chars, $length); 
$password = ”; 
for($i = 0; $i < $length; $i++) 
{ 
// 将 $length 个数组元素连接成字符串 
$password .= $chars[$keys[$i]]; 
} 
return $password; 
}

時間効率の比較

以下の PHP コードを使用して、6 桁のパスワードを生成するための上記 3 つのランダム パスワード生成関数の実行時間を計算し、それらの時間効率を簡単に比較します。最終結果は次のとおりです:

方法 1: 9.8943710327148E-5 秒
方法 2: 9.6797943115234E-5 秒
方法 3: 0.00017499923706055 秒
方法 1 と方法 2 の実行時間は類似していることがわかります。方法 2 の実行時間はほぼ同じですが、方法 3 の実行時間はわずかに長くなります。

まとめ: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

PHP はログイン確認コード機能を実装します

無料メッセージ通知機能、PHP の Telegram インターフェースを使用してそれを記述する方法?

PHP開発WeChat返金事件

以上がPHP でランダムな文字列を生成する 3 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。