In PHP ist die Funktion str_shuffle () ein gemeinsames Werkzeug, um Zeichen in Zeichenfolgen zufällig durcheinander zu bringen. Es ist eine ideale Wahl für die Implementierung von Anwendungsszenarien wie Charakter -Randomisierung, Kennwortgenerierung und Verifizierungscodesystemen. Aber kann Str_Shuffle () Strings verarbeiten, die spezielle Zeichen richtig enthalten? In diesem Artikel wird dieses Problem eingehalten und Ihnen helfen, das Verhalten der Funktion mit einigen Beispielen zu verstehen.
Die Funktion der Funktion von str_shuffle () besteht darin, alle Zeichen in der angegebenen Zeichenfolge neu zu ordnen und eine neu verwendete Zeichenfolge zurückzugeben. Es ist zu beachten, dass diese Funktion die ursprüngliche Zeichenfolge nicht ändert, sondern eine neue Zeichenfolge zurückgibt.
<span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>$ str : Die zu zerstörte Zeichenfolge.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$shuffled</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$shuffled</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Ausgabe:
<span><span>olleh (Die Ergebnisse können für jeden Lauf unterschiedlich sein)
</span></span>Für Zeichenfolgen, die Sonderzeichen enthalten, hat Str_shuffle () keinen wesentlichen Unterschied zu gewöhnlichen Zeichen. PHP stört die Sonderzeichen (z. B. Zeichenzeichen, Räume, Zahlen usw.) mit Buchstaben zufällig. Insbesondere führt Str_Shuffle () keine zusätzliche Verarbeitung für Sonderzeichen durch, sondern einfach die gesamte Zeichenfolge als Abfolge von Zeichen durcheinander.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello! World#123"</span></span><span>;
</span><span><span class="hljs-variable">$shuffled</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$shuffled</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Ausgabe:
<span><span>Wor1d2! H</span><span><span class="hljs-comment">#l3lo</span></span><span>
</span></span>Es ist zu sehen, dass Sonderzeichen (wie !, # ) Normal gestört und mit anderen Charakteren neu angeordnet werden.
Leerzeichen können auch am Störungsprozess normalerweise als Sonderzeichen teilnehmen. Unabhängig davon, ob es sich um Leerzeichen oder andere Interpunktionsmarken handelt, wird Str_Shuffle () als normaler Charakter behandelt.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello World!"</span></span><span>;
</span><span><span class="hljs-variable">$shuffled</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$shuffled</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Ausgabe:
<span><span>r!oWlle oH
</span></span>Wie oben gezeigt, werden die Räume in eine zufällige Position gestört, und die Struktur der gesamten Saite hat sich geändert.
Obwohl Str_Shuffle () alle Zeichen einschließlich Sonderzeichen verarbeiten kann, gibt es mehrere Dinge zu beachten:
Sicherheit : str_shuffle () kann nicht zum Verschlingen oder Generieren sicherer Passwörter verwendet werden. Da sein disruptiver Algorithmus nicht kompliziert ist, können die generierten Ergebnisse leicht vorhergesagt werden. Für Szenarien mit hohen Sicherheitsanforderungen, wie z. B. das Generieren von Passwörtern oder Token, sollten sicherere Funktionen wie random_int () und openSSL_RANDOM_PSEUDO_BYTES () verwendet werden.
Zeichensatzproblem : Wenn die Zeichenfolge nicht-ASCII-Zeichen (wie Chinesisch oder Emoji) enthält, wird Str_shuffle () auch durch Zeichen gestört. UTF-8-codierte Multibyte-Zeichen können jedoch ein unerwartetes Verhalten verursachen, insbesondere bei der Verarbeitung von Zeichenfolgen, die möglicherweise die Richtigkeit des Zeichensatzes sicherstellen müssen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hallo,Welt!"</span></span><span>;
</span><span><span class="hljs-variable">$shuffled</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$shuffled</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Ausgabe:
<span><span>Du!Gut,Grenze
</span></span>Obwohl die Charakterordnung gestört ist, gibt es kein Problem mit der Verarbeitung von Multi-Byte-Zeichen. PHP behandelt sie als ganzer Charakter, wenn sie stören.
Str_Shuffle () kann erfolgreich Zeichenfolgen verarbeiten, die Sonderzeichen enthalten, unabhängig davon, ob Interpunktion, Raum oder Zahlen, und sie werden zufällig mit anderen Zeichen angeordnet. Dies macht Str_Shuffle () zu einem sehr flexiblen und praktischen Manipulationsinstrument. Wenn Sie jedoch mit Sicherheitsaufgaben zu tun haben, sollten Sie dennoch eine stärkere Methode zur Zufallsgenerierung auswählen, anstatt sich auf Str_shuffle () zu verlassen.
Durch die Erklärung dieses Artikels hoffe ich, dass Sie ein klareres Verständnis für die Verwendung von str_shuffle () und der Verarbeitung von Sonderzeichen haben.