Dans PHP, la fonction STR_SHUXH () est un outil commun pour gâcher les caractères au hasard dans les chaînes. Il s'agit d'un choix idéal pour implémenter des scénarios d'application tels que la randomisation des caractères, la génération de mots de passe et les systèmes de code de vérification. Mais STR_SHUXH () peut-il gérer les chaînes qui contiennent correctement les caractères spéciaux? Cet article creusera dans ce numéro en profondeur et vous aidera à comprendre le comportement de la fonction avec quelques exemples.
La fonction de la fonction str_shuffle () est de réorganiser tous les caractères dans la chaîne donnée et de renvoyer une chaîne nouvellement désordonnée. Il convient de noter que cette fonction ne modifiera pas la chaîne d'origine, elle renverra une nouvelle chaîne.
<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 : La chaîne à perturber.
<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>Sortir:
<span><span>olleh (Les résultats peuvent être différents pour chaque course)
</span></span>Pour les chaînes contenant des caractères spéciaux, str_shuffle () n'a aucune différence essentielle par rapport aux caractères ordinaires. PHP perturbera au hasard des caractères spéciaux (tels que des marques de ponctuation, des espaces, des chiffres, etc.) avec des lettres. Plus précisément, str_shuffle () ne fait aucun traitement supplémentaire pour les caractères spéciaux, il gâche simplement toute la chaîne en tant que séquence de caractères.
<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>Sortir:
<span><span>Wor1d2! H</span><span><span class="hljs-comment">#l3lo</span></span><span>
</span></span>On peut voir que des caractères spéciaux (tels que ! , # ) sont perturbés normalement et réorganisés avec d'autres personnages.
Les espaces peuvent également participer normalement au processus de perturbation en tant que caractères spéciaux. Qu'il s'agisse d'espaces ou d'autres marques de ponctuation, STR_SHUXH () sera traité comme un caractère normal.
<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>Sortir:
<span><span>r!oWlle oH
</span></span>Comme indiqué ci-dessus, les espaces sont perturbés en position aléatoire et la structure de la chaîne entière a changé.
Bien que Str_Shuffle () puisse gérer tous les caractères, y compris des caractères spéciaux, il y a plusieurs choses à noter:
Sécurité : str_shuffle () ne peut pas être utilisé pour crypter ou générer des mots de passe sécurisés. Parce que son algorithme perturbateur n'est pas compliqué, les résultats générés sont facilement prédits. Pour les scénarios avec des exigences de haute sécurité, tels que la génération de mots de passe ou de jetons, des fonctions plus sûres telles que random_int () et openssl_random_pseudo_bytes () doivent être utilisées.
Problème de jeu de caractères : Si la chaîne contient des caractères non ASCII (tels que chinois ou emoji), str_shuffle () sera également perturbé par les caractères. Cependant, les caractères multi-monte encodés UTF-8 peuvent provoquer un comportement inattendu, en particulier lors du traitement des chaînes, ce qui peut nécessiter d'assurer l'exactitude du jeu de caractères.
<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">"Bonjour,monde!"</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>Sortir:
<span><span>Toi!bien,limite
</span></span>Bien que l'ordre des caractères soit perturbé, il n'y a aucun problème avec le traitement des caractères multi-octets. PHP les traitera comme un personnage entier lors de la perturbation.
str_shuffle () peut traiter avec succès les chaînes contenant des caractères spéciaux, que ce soit la ponctuation, l'espace ou les nombres, et il sera organisé au hasard avec d'autres caractères. Cela fait de Str_Shuffle () un outil de manipulation de cordes très flexible et pratique. Cependant, si vous avez affaire à des tâches liées à la sécurité, vous devez toujours choisir une méthode de génération aléatoire plus forte au lieu de compter sur str_shuffle () .
Grâce à l'explication de cet article, j'espère que vous avez une compréhension plus claire de l'utilisation de str_shuffle () et du traitement de caractères spéciaux.