Heim  >  Artikel  >  Backend-Entwicklung  >  So generieren Sie nicht wiederkehrende 18-Bit-Zeichen in PHP

So generieren Sie nicht wiederkehrende 18-Bit-Zeichen in PHP

PHPz
PHPzOriginal
2023-03-29 10:10:14660Durchsuche

Bei der Webentwicklung ist es häufig erforderlich, einige sich nicht wiederholende Zufallszeichen wie Bestellnummern, Bestätigungscodes usw. zu generieren. PHP ist eine weit verbreitete Entwicklungssprache und wir können PHP problemlos zur Implementierung dieser Funktion verwenden. In diesem Artikel wird vorgestellt, wie man in PHP sich nicht wiederholende 18-Bit-Zeichen generiert, sowie die entsprechenden Algorithmen und Techniken.

1. Verwenden Sie Zufallszahlen, um eindeutige Zeichen zu generieren.

In PHP können wir die Funktion rand() oder mt_rand() verwenden, um Zufallszahlen zu generieren. Da es jedoch wahrscheinlich ist, dass sich die mit dieser Methode generierten Zufallszahlen wiederholen, sind einige Fähigkeiten erforderlich, um sicherzustellen, dass sich die generierten Zeichen nicht wiederholen.

Das Folgende ist eine einfache Methode:

1. Definieren Sie eine leere Zeichenfolge $chars, um die generierten Zeichen zu speichern.

2 Verwenden Sie jedes Mal, wenn ein zufälliges Zeichen generiert wird, um in $chars zu suchen Das Zeichen ist bereits vorhanden. Wenn es bereits vorhanden ist, generieren Sie ein Zufallszeichen neu.

3 Wenn das generierte Zufallszeichen nicht vorhanden ist, fügen Sie es der Zeichenfolge $chars hinzu.

Das Folgende ist ein Beispielcode:

function generateRandomString($length) {
  $chars = "";

  while (strlen($chars) < $length) {
    $char = chr(mt_rand(65, 90)); // 生成65-90的随机数字
    if (strpos($chars, $char) === false) { // 判断$char是否已经在$chars中出现过
      $chars .= $char;
    }
  }

  return $chars;
}

echo generateRandomString(18);

Im obigen Code verwenden wir die Funktion mt_rand(), um eine Zufallszahl zwischen 65 und 90 zu generieren, und verwenden dann die Funktion chr(), um diese Zahl in das entsprechende Zeichen umzuwandeln . Da die generierte Zufallszeichenfolge möglicherweise wiederholt wird, verwenden Sie die Funktion strpos(), um herauszufinden, ob das Zeichen bereits vorhanden ist, und wiederholen Sie den Vorgang des Generierens zufälliger Zeichen und des Durchsuchens der While-Schleife, bis die Gesamtzahl der generierten Zeichen die festgelegte Länge erreicht Ergebnis zurückgeben.

2. Verwenden Sie Zeitstempel und Zufallszahlen, um eindeutige Zeichen zu generieren.

Die obige Methode kann die Funktion der Generierung eindeutiger Zeichen bereits abschließen. Aufgrund der Notwendigkeit, wiederholt nach generierten Zeichen zu suchen, kann die erforderliche Rechenleistung relativ hoch sein. In Situationen, in denen der gleichzeitige Zugriff hoch ist und die Anzahl der generierten Zeichen groß ist, können Leistungsprobleme auftreten.

Daher können wir die Methode Zeitstempel + Zufallszahl verwenden, um eindeutige Zeichen zu generieren.

Das Folgende ist die Idee:

1. Erzeugen Sie einen eindeutigen Zeitstempel und konvertieren Sie ihn in eine hexadezimale Zeichenfolge.

2. Erzeugen Sie eine vierstellige Zufallszeichenfolge und fügen Sie sie der Zeitstempelzeichenfolge hinzu ;

3. Verwenden Sie die Funktion substr(), um die letzten 16 Ziffern der Zeitstempelzeichenfolge als generierte Zufallszeichen abzufangen.

Das Folgende ist ein Beispielcode:

function generateNonceStr($length = 18) {
  $timestamp = uniqid('', false);
  $nonce_str = substr($timestamp, 4) . substr(mt_rand(1000, 9999), 0, 4);
  return substr($nonce_str, -$length);
}

echo generateNonceStr();

Im obigen Code generieren wir zunächst eine 16-Bit-Zeitstempelzeichenfolge, konvertieren sie in eine 36-stellige Zeichenfolge und generieren dann eine zufällige Zeichenfolge mit der angegebenen Länge. Schließlich werden die beiden Zeichenfolgen verkettet und die Funktion substr() verwendet, um die nachfolgende Teilzeichenfolge der angegebenen Länge zu erhalten, bei der es sich um das generierte sich nicht wiederholende Zeichen handelt.

3. Zusammenfassung

In diesem Artikel werden zwei Methoden zur Generierung eindeutiger Zeichen vorgestellt, darunter die Methode der Verwendung von Zeitstempeln und der Zufallszahlengenerierung, die praktischer und effizienter ist. Für Szenarien wie die Generierung von Bestellnummern in zahlungsbezogenen Szenarien sollten umfassendere Algorithmen und Regeln verwendet werden, um sicherzustellen, dass die generierten Bestellnummern nicht nur nicht doppelt vorhanden sind, sondern auch das Auftreten bestimmter Zeichen oder Zahlen vermieden wird, wodurch das Risiko verringert wird angegriffen werden.

Das obige ist der detaillierte Inhalt vonSo generieren Sie nicht wiederkehrende 18-Bit-Zeichen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn