Jump to content

Archived

This topic is now archived and is closed to further replies.

CMellor

Random Alphanumerical String

Recommended Posts

Hey,

Does anybody know a simple script to randomize a string of random letters and numbers, like so: [b]$string = "abcdefghijklmnopqrstuvwxyz0123456789";[/b]. I thought [b]rand()[/b] would've done the job, but that only works with numbers and then I tried [b]str_shuffle()[/b] but that only randomizes the full string, and I want to limit my string to 32 characters (well any really, but i'm using 32 for what I need).

If anyone can help, that'd be great, thanks.

Chris.

Share this post


Link to post
Share on other sites
See second line code example at:

[a href=\"http://us3.php.net/manual/en/function.uniqid.php\" target=\"_blank\"]http://us3.php.net/manual/en/function.uniqid.php[/a]

Share this post


Link to post
Share on other sites
[!--quoteo(post=359033:date=Mar 27 2006, 09:09 PM:name=toplay)--][div class=\'quotetop\']QUOTE(toplay @ Mar 27 2006, 09:09 PM) [snapback]359033[/snapback][/div][div class=\'quotemain\'][!--quotec--]
See second line code example at:

[a href=\"http://us3.php.net/manual/en/function.uniqid.php\" target=\"_blank\"]http://us3.php.net/manual/en/function.uniqid.php[/a]
[/quote]

Cool, thanks.

Is their a way to change the limit as to what I random, like that function provides 32 characters, but what about, say for example, I wanted it to just provide a random 5 character string?

Thanks.

Share this post


Link to post
Share on other sites
Let it generate the 32 characters, then you simply use substr() to grab as many characters as you want. See:

[a href=\"http://us3.php.net/manual/en/function.substr.php\" target=\"_blank\"]http://us3.php.net/manual/en/function.substr.php[/a]

Share this post


Link to post
Share on other sites
MD5 isn't really a random string generator, though it can serve that purpose fairly well. In case you desire a truly random distribution, you can use this function I wrote a while back:

[code]function generatestring($len = 12) {
    $chars = "abcdefghijklmnopqrstuvwxyz";
    $chars .= strtoupper($chars);
    $chars .= "0123456789";
    $ch = str_split($chars);
    $max = count($ch) - 1;
    for ($i = 0; $i < $len; $i++) {
        $return .= $ch[mt_rand(0,$max)];
    }
    return $return;
}[/code]

Share this post


Link to post
Share on other sites
Thanks for your help guys. From the stuff you told me and the links you provided, I came up with this:

[code]<?php
$string = "qwertyuiopasdfghjklzxcvbnm0123456789";
echo str_shuffle(substr($string, 0, 32));
?>[/code]

It's small, but does the job. Simple.

Share this post


Link to post
Share on other sites
[!--quoteo(post=359053:date=Mar 27 2006, 02:36 PM:name=wickning1)--][div class=\'quotetop\']QUOTE(wickning1 @ Mar 27 2006, 02:36 PM) [snapback]359053[/snapback][/div][div class=\'quotemain\'][!--quotec--]
MD5 isn't really a random string generator, though it can serve that purpose fairly well. In case you desire a truly random distribution, you can use this function I wrote a while back:

[code]function generatestring($len = 12) {
    $chars = "abcdefghijklmnopqrstuvwxyz";
    $chars .= strtoupper($chars);
    $chars .= "0123456789";
    $ch = str_split($chars);
    $max = count($ch) - 1;
    for ($i = 0; $i < $len; $i++) {
        $return .= $ch[mt_rand(0,$max)];
    }
    return $return;
}[/code]
[/quote]
FYI:

The str_split() function is only available in PHP 5+.

You ideally should initialize the $return variable before using it with ".=".

You can abbreviate the first four lines to this one line:

$ch = str_split(range('a', 'z') . range('A', 'Z') . range(0, 9));

You actually don't even need the str_split() because you can access individual characters from a string using $string{index} syntax.

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.