Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : String Functions : str_shuffle

str_shuffle

Randomly shuffles a string (PHP 4 >= 4.3.0, PHP 5)
string str_shuffle ( string str )

Example 2448. str_shuffle() example

<?php
$str
= 'abcdef';
$shuffled = str_shuffle($str);

// This will echo something like: bfdaec
echo $shuffled;
?>

Code Examples / Notes » str_shuffle

sfalcon_

You can use str_shuffle to make simple and nice random passwords:
function random_passwd($numchar) {
     $string =str_shuffle("abcefghijklmnopqrstuvwxyz1234567890");
     $password = substr($string,1,$numchar);
     return($password);
}
echo random_passwd('8') // Will return something like "xa3dh214" =)


dzafel

Very, very simple random password generator, without using rand() function:
<?php
function random_password($chars = 8) {
  $letters = 'abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
  return substr(str_shuffle($letters), 0, $chars);
}
?>


cygnusx1

To cobine functionality and simplicity of the two functions below we can have:
<?php
function generatePasswd($numAlpha=6,$numNonAlpha=2)
{
  $listAlpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  $listNonAlpha = ',;:!?.$/*-+&@_+;./*&?$-!,';
  return str_shuffle(
     substr(str_shuffle($listAlpha),0,$numAlpha) .
     substr(str_shuffle($listNonAlpha),0,$numNonAlpha)
   );
}
?>


aidan

This functionality is now implemented in the PEAR package PHP_Compat.
More information about using this function without upgrading your version of PHP can be found on the below link:
http://pear.php.net/package/PHP_Compat


michiel van den boogaard

Shortend function for PHP < 4.3
<?php  
function RandomPass($numchar)  
{  
   $word = "a,b,c,d,e,f,g,h,i,j,k,l,m,1,2,3,4,5,6,7,8,9,0";  
   $array=explode(",",$word);  
   shuffle($array);  
   $newstring = implode($array,"");  
   return substr($newstring, 0, $numchar);  
}  
?>


nmoyroud

Just another update to password builder function. With this version, you can choose the number of alphanumeric characters to add and the number of non-alphanumeric characters. You obtain a more secure password. You can add another characters to the non-alphanumeric list if you need.
If you want a password with 8 alphanumeric and 3 non-alphanumeric characters in a random order, just call :
random_passwd(8,3);
function generatePasswd($numAlpha=6,$numNonAlpha=2) {
   $pwd = '';
   $listAlpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
   $listNonAlpha = ',;:!?.$/*-+&@_+;./*&?$-!,';
   $start = mt_rand(1, (strlen($listAlpha)-$numAlpha));
   $string = str_shuffle($listAlpha);
   $pwd .= substr($string,$start,$numAlpha);
   $start = mt_rand(1, (strlen($listNonAlpha)-$numNonAlpha));
   $string = str_shuffle($listNonAlpha);
   $pwd .= substr($string,$start,$numNonAlpha);
   return str_shuffle($pwd);
}


support

Just an update to sfalcon's function.  Chooses a random number within the length and then selects a random segment not the current segment of 1 to $numchar. Also added upper-case chars.
function random_passwd($numchar=8) {
   $str = "abcefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   $start = mt_rand(1, (strlen($str)-$numchar));
   $string = str_shuffle($str);
   $password = substr($string,$start,$numchar);
   return($password);
}


rudigreen

Here are 2 functions, one inverts the case of a string and the other one randomizes the captilization in a string, kinda
useful string operations.
<?
//Inverts the case of a string
function invert_case($str)
{
$nstr = '';
for($i=0;$i<strlen($str);$i++)
{
$char = substr($str,$i,1);
//If it's lower case make it upper case
if($char == strtolower($char))
{
$char = strtoupper($char);
}
else //if it's upper than make it lower
{
$char = strtolower($char);
}
$nstr .= $char;
}
return $nstr;
}
//Randomly capilizes/uncaptilizes chars in a string
function rand_case($str)
{
$nstr = '';
for($i=0;$i<strlen($str);$i++)
{
$char = substr($str,$i,1);
$char = invert_case($char);
//2 options, to change or not to change
rand(0,1) == 1 ? $char = invert_case($char) : null;
$nstr .= $char;
}
return $nstr;
}
//Example:
echo rand_case("pHp rooLz! gUyZ"); //produces something random
echo invert_case("pHP STRiNG sEx");//produces Php strIng SeX
?>


jojersztajner

Aoccdrnig to rseearch at an Elingsh uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoatnt tihng is that the frist and lsat ltteer is at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit a porbelm. Tihs is bcuseae we do not raed ervey lteter by it slef but the wrod as a wlohe.
Hree's a cdoe taht slerbmcas txet in tihs way:
<?php
function scramble_word($word) {
if (strlen($word) < 2)
return $word;
else
return $word{0} . str_shuffle(substr($word, 1, -1)) . $word{strlen($word) - 1};
}
echo preg_replace('/(\w+)/e', 'scramble_word("\1")', 'A quick brown fox jumped over the lazy dog.');
?>
It may be ufseul if you wnat to cetare an aessblicce CTCPAHA.


qube, efnet #php

(correction)
I balked at the loop method used below in inverting and randomising capitalisation and released that we just need to flip the bit (3rd bit or 6th depending on what way you look at it) and it would cause the case change in a character.
Full code and example:
http://www.pgregg.com/projects/php/code/str_case.php
(append an s to the url to get the .phps source)
I came up with a method and thanks to arpad (optimising as ever! :) we now have:
Invert case:
preg_replace('/[a-z]/ie', '\'$0\' ^ str_pad(\'\', strlen(\'$0\'), \' \')', $input);
Randomise case:
preg_replace('/[a-z]/ie', '(rand(0,1) ? \'$0\' ^ str_pad(\'\', strlen(\'$0\'), \' \') : \'$0\')', $input);
and for good measure:
Upper case:
preg_replace('/[a-z]/e', '\'$0\' & str_pad(\'\', strlen(\'$0\'), chr(223))', $input);
Lower case:
preg_replace('/[A-Z]/e', '\'$0\' | str_pad(\'\', strlen(\'$0\'), \' \')', $input);


Change Language


Follow Navioo On Twitter
addcslashes
addslashes
bin2hex
chop
chr
chunk_split
convert_cyr_string
convert_uudecode
convert_uuencode
count_chars
crc32
crypt
echo
explode
fprintf
get_html_translation_table
hebrev
hebrevc
html_entity_decode
htmlentities
htmlspecialchars_decode
htmlspecialchars
implode
join
levenshtein
localeconv
ltrim
md5_file
md5
metaphone
money_format
nl_langinfo
nl2br
number_format
ord
parse_str
print
printf
quoted_printable_decode
quotemeta
rtrim
setlocale
sha1_file
sha1
similar_text
soundex
sprintf
sscanf
str_getcsv
str_ireplace
str_pad
str_repeat
str_replace
str_rot13
str_shuffle
str_split
str_word_count
strcasecmp
strchr
strcmp
strcoll
strcspn
strip_tags
stripcslashes
stripos
stripslashes
stristr
strlen
strnatcasecmp
strnatcmp
strncasecmp
strncmp
strpbrk
strpos
strrchr
strrev
strripos
strrpos
strspn
strstr
strtok
strtolower
strtoupper
strtr
substr_compare
substr_count
substr_replace
substr
trim
ucfirst
ucwords
vfprintf
vprintf
vsprintf
wordwrap
eXTReMe Tracker