この記事では、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!@#$%^&*()-_ []{}<>~`+=,.;:/?|'; $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', ‘b', ‘c', ‘d', ‘e', ‘f', ‘g', ‘h', ‘i', ‘j', ‘k', ‘l','m', ‘n', ‘o', ‘p', ‘q', ‘r', 's', ‘t', ‘u', ‘v', ‘w', ‘x', ‘y','z', ‘A', ‘B', ‘C', ‘D', ‘E', ‘F', ‘G', ‘H', ‘I', ‘J', ‘K', ‘L','M', ‘N', ‘O', ‘P', ‘Q', ‘R', ‘S', ‘T', ‘U', ‘V', ‘W', ‘X', ‘Y','Z', ‘0′, ‘1′, ‘2′, ‘3′, ‘4′, ‘5′, ‘6′, ‘7′, ‘8′, ‘9′, ‘!', ‘@','#', ‘$', ‘%', ‘^', ‘&', ‘*', ‘(‘, ‘)', ‘-', ‘_', ‘[', ']‘, ‘{‘, ‘}', ‘<', ‘>', ‘~', ‘`', ‘+', ‘=', ‘,', ‘.', ‘;', ‘:', ‘/', ‘?', ‘|'); // 在 $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 の Telegram インターフェースを使用してそれを記述する方法?
以上がPHP でランダムな文字列を生成する 3 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。