PHP random string generator
To answer this question specifically, two problems:
$randstring
is not in scope when you echo it.- The characters are not getting concatenated together in the loop.
Here's a code snippet with the corrections:
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
Output the random string with the call below:
// Echo the random string.
// Optionally, you can give it a desired string length.
echo generateRandomString();
Please note that this generates predictable random strings. If you want to create secure tokens, see this answer.
php Random string generation with letters and numbers
Use the below code.
For digits and characters
$length = 10;
echo substr(str_shuffle('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'),1,$length);
For only characters
$length = 10;
echo substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ'),1,$length);
For only digits
$length = 10;
echo substr(str_shuffle('0123456789'),1,$length);
One-line PHP random string generator?
Rather than shuffling the alphabet string , it is quicker to get a single random char .
Get a single random char from the string and then append the md5( time( ) )
to it . Before appending md5( time( ) )
remove one char from it so as to keep the resulting string length to 32 chars :
substr("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", mt_rand(0, 51), 1).substr(md5(time()), 1);
Lowercase version :
substr("abcdefghijklmnopqrstuvwxyz", mt_rand(0, 25), 1).substr(md5(time()), 1);
Or even shorter and a tiny bit faster lowercase version :
chr(mt_rand(97, 122)).substr(md5(time()), 1);
/* or */
chr(mt_rand(ord('a'), ord('z'))).substr(md5(time()), 1);
A note to anyone trying to generate many random strings within a second:
Since time( )
returns time in seconds , md5( time( ) )
will be same throughout a given second-of-time due to which if many random strings were generated within a second-of-time, those probably could end up having some duplicates .
I have tested using below code . This tests lower case version :
$num_of_tests = 100000;
$correct = $incorrect = 0;
for( $i = 0; $i < $num_of_tests; $i++ )
{
$rand_str = substr( "abcdefghijklmnopqrstuvwxyz" ,mt_rand( 0 ,25 ) ,1 ) .substr( md5( time( ) ) ,1 );
$first_char_of_rand_str = substr( $rand_str ,0 ,1 );
if( ord( $first_char_of_rand_str ) < ord( 'a' ) or ord( $first_char_of_rand_str ) > ord( 'z' ) )
{
$incorrect++;
echo $rand_str ,'<br>';
}
else
{
$correct++;
}
}
echo 'Correct: ' ,$correct ,' . Incorrect: ' ,$incorrect ,' . Total: ' ,( $correct + $incorrect );
Random string generator PHP
You could try using $random = substr(str_shuffle(MD5(microtime())), 0, 8);
, which will output the same amount of random characters as you have in your example. I actually prefer this method over most as it doesn't require you to put in the expected characters and even more importantly, it can be done in one line of code!
PHP random string generator
To answer this question specifically, two problems:
$randstring
is not in scope when you echo it.- The characters are not getting concatenated together in the loop.
Here's a code snippet with the corrections:
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
Output the random string with the call below:
// Echo the random string.
// Optionally, you can give it a desired string length.
echo generateRandomString();
Please note that this generates predictable random strings. If you want to create secure tokens, see this answer.
How can I generate a random string using php and only once per day?
You can achieve the same result using a hash function with the current date.
$sehiradi.substr(sha1('someString'.date('Ymd')),0,5);
This will work for you, as the hash will always bring the same result with the same input. Everyday, the function will use a different input value, as the day changes.
EDIT: Using your values you can have:
$sehiradi = "diyarbakir";
$subdomainadi = $sehiradi.substr(sha1('someString'.date('Ymd')),0,5);
Please replace 'someString' with some key that you have in mind. The point is to make it hard for someone to know the source of your "random" string.
Laravel unique random string number
To guarantee a unique number you should instead use created
. Whenever a ticket is created, you can prepend some random numbers to the id to generate a unique number. Try this
public function created(Ticket $ticket) {
$ticket->number = rand(1000, 9999).str_pad($ticket->id, 3, STR_PAD_LEFT);
$ticket->save();
}
Related Topics
PHP File_Get_Contents() and Setting Request Headers
Remove Non-Utf8 Characters from String
PHP & MySQL: Year 2038 Bug: What Is It - How to Solve It
Best Way to Avoid Duplicate Entry into MySQL Database
Convert Seconds into Days, Hours, Minutes and Seconds
Reading/Writing a Ms Word File in PHP
How to Create a Comma-separated List from an Array in PHP
Permutations - All Possible Sets of Numbers
Convert Time in Hh:Mm:Ss Format to Seconds Only
Use Global Variables in a Class
Send Email from Localhost Running Xammp in PHP Using Gmail Mail Server
How to Use Filesystem Functions in PHP, Using Utf-8 Strings
How to Make a Calculator in PHP