Current Location: Home> Latest Articles> How to Use the str_shuffle Function in PHP to Shuffle Letters and Numbers? Available Methods

How to Use the str_shuffle Function in PHP to Shuffle Letters and Numbers? Available Methods

gitbox 2025-06-11

What is the str_shuffle Function?

str_shuffle is a function in PHP's standard library that randomly shuffles all the characters in a string and returns the shuffled version. Its function prototype is as follows:

<span><span><span class="hljs-keyword">string</span></span><span> </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">$string</span></span><span>)
</span></span>

The $string parameter is the original input string, and the function returns the newly shuffled string.


Basic Usage

Here is a simple example of how to use it:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$original</span></span><span> = </span><span><span class="hljs-string">&#039;abcdef123456&#039;</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">$original</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">?&gt;</span></span><span>
</span></span>

Running the above code will display the shuffled result of letters and numbers, for example: 3e5d6abf241c. The result may vary each time it's run.


Generating a Mixed String Shuffler

Typically, we want to shuffle not just static strings, but strings generated dynamically, such as a random password consisting of numbers and letters:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-number">10</span></span><span>;
</span><span><span class="hljs-variable">$chars</span></span><span> = </span><span><span class="hljs-string">&#039;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#039;</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">$chars</span></span><span>);
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$shuffled</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$length</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$password</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

This method first shuffles the character pool, then takes the first $length characters as the password. Note that str_shuffle uses a pseudo-random method and should not be used for secure cryptographic operations.


Comparison with Other Methods

While str_shuffle is very convenient, in some scenarios you might need more flexible shuffling approaches, such as:

  1. Shuffling array elements: Use the shuffle() function.

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_split</span></span><span>(</span><span><span class="hljs-string">&#039;abcdef123456&#039;</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">shuffle</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span><span><span class="hljs-variable">$shuffled</span></span><span> = </span><span><span class="hljs-title function_ invoke__">implode</span></span><span>(</span><span><span class="hljs-string">&#039;&#039;</span></span><span>, </span><span><span class="hljs-variable">$array</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">?&gt;</span></span><span>
</span></span>
  1. Custom shuffling rules: You can define your own logic, such as restricting shuffle order or locking specific character positions.

  2. Embedding shuffled strings in URLs: For example, generating a unique short link or identifier like:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-string">&#039;ABC123XYZ&#039;</span></span><span>);
</span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">&#039;https://gitbox.net/u/&#039;</span></span><span> . </span><span><span class="hljs-variable">$id</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$url</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

This generates a URL like https://gitbox.net/u/ZC3X1YBA2 that can uniquely identify a user or resource.


Important Notes

  • str_shuffle uses the rand() function internally, so it is not recommended for use in security-sensitive scenarios like password generation or cryptographic tokens.

  • For more secure random shuffling, consider combining random_int() with a custom algorithm.

  • str_shuffle does not support multibyte characters (e.g., Chinese). Convert to an array first before shuffling in such cases.