ホームページ > バックエンド開発 > PHPチュートリアル > 重複を最小限に抑えた 5 文字のランダムな文字列を作成するには?

重複を最小限に抑えた 5 文字のランダムな文字列を作成するには?

Linda Hamilton
リリース: 2024-10-19 15:37:02
オリジナル
1048 人が閲覧しました

How to Create a 5-Character Random String with Minimal Duplication?

重複を最小限に抑えたランダムな 5 文字の生成

重複を最小限に抑えたランダムな 5 文字の文字列を作成するには、最も効果的なアプローチの 1 つが次の方法を利用します。 PHP の機能と巧妙なテクニックを組み合わせたものです。解決策を詳しく見てみましょう:

md5 と rand の使用

<code class="php">$rand = substr(md5(microtime()),rand(0,26),5);</code>
ログイン後にコピー

この方法では、md5 ハッシュ関数を使用してタイムスタンプから 32 文字の文字列を生成します。 substr と rand を使用すると、ランダムな 5 文字のサブセクションが抽出され、重複確率の低い文字列が得られます。

shuffle と array_rand の使用

<code class="php">$seed = str_split('abcdefghijklmnopqrstuvwxyz'
                 .'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
                 .'0123456789!@#$%^&amp;*()'); // and any other characters
shuffle($seed); // probably optional since array_is randomized; this may be redundant
$rand = '';
foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];</code>
ログイン後にコピー

こちら、事前定義された文字セット ($seed) がランダムにシャッフルされます。次に、array_rand を使用して、シャッフルされた配列から 5 つの文字がランダムに選択され、文字の多様な分散が保証されます。

インクリメンタル ハッシュを使用します

<code class="php">function incrementalHash($len = 5){
  $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  $base = strlen($charset);
  $result = '';

  $now = explode(' ', microtime())[1];
  while ($now >= $base){
    $i = (int)$now % $base;
    $result = $charset[$i] . $result;
    $now /= $base;
  }
  return substr(str_repeat($charset[0], $len) . $result, -$len); 
}</code>
ログイン後にコピー

この関数は、ランダムな文字列を段階的に生成する現在の時刻。その結果、後続の世代ごとに、ますます固有の文字列が得られます。ただし、ソルティングやトークン生成などの暗号化目的に使用される場合、他の方法よりも予測可能性が高いことは注目に値します。

以上が重複を最小限に抑えた 5 文字のランダムな文字列を作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート