Avatar billede flim Nybegynder
10. december 2005 - 16:09 Der er 10 kommentarer og
1 løsning

Generere tilfældig string

Hej eksperter.

Jeg søger et lille stykke kode som kan generere en tilfældig string på 24 tegn. Der må bruger a-z, A-Z samt 0-9

Der skal minimum være 6 tegn af hver, og der må ikke stå mere end 2 ens efter hinanden. Dvs der må ikke stå mere end 2 tal efter hinanden, eller 2 små bogstaver efter hinanden osv.

Håber meget I kan hjælpe her.

På forhånd tak
Avatar billede jakobdo Ekspert
10. december 2005 - 17:55 #1
Kunne du ikke lave:
$value1 = "abcdefghijklmnopqrstuvwxyz";
$value2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$value3 = "0123456789";

$streng = "";
for($i = 0;$i < 24; $i++)
{
$val = $i % 3;
$streng .= $value.$val[rand(0,strlen($value.$val))];
}

PS: det er ikke testet!
Avatar billede flim Nybegynder
11. december 2005 - 19:58 #2
Virker ikke helt.

Se eksempel her: http://boysne.dk/test/rand.php
Avatar billede jakobdo Ekspert
11. december 2005 - 20:03 #3
<?php
//http://exp.dk/spm/671091

$values  = array();
$values[] = "abcdefghijklmnopqrstuvwxyz";
$values[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$values[] = "0123456789";

$streng = "";
for($i = 0;$i < 24; $i++)
{
    $val = $i % 3;
    $streng .= $values[$val][rand(0,strlen($values[$val]))];
}

echo $streng;

?>
Avatar billede flim Nybegynder
11. december 2005 - 20:06 #4
Smukt - se samme link og opdater med F5. Virker sgu bare det skidt.

Smider du et svar?
Avatar billede jakobdo Ekspert
11. december 2005 - 20:07 #5
Jeg tror der er en lille fejl i lortet!
Så jeg prøver lige at lave en lidt bedre version!
Når den er der, så skal jeg nok smide et svar! :o)
Avatar billede flim Nybegynder
11. december 2005 - 20:09 #6
Meget gerne :-)

Men hvad er fejlen? Kan ikke lige umiddelbart se den.
Avatar billede jakobdo Ekspert
11. december 2005 - 20:10 #7
Så tror jeg den var der:

<?php
//http://exp.dk/spm/671091

$values  = array();
$values[] = "abcdefghijklmnopqrstuvwxyz";
$values[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$values[] = "0123456789";

$streng = "";
for($i = 0;$i < 24; $i++)
{
    $val = $i % 3;
    $length = strlen($values[$val])-1;
    $random = rand(0,$length);
    $value  = $values[$val][$random];
    $streng .= $value;
}

echo $streng;

?>

Det kan muligvis komprimeres, men sådan er den nok lettere at forstå!
Det som var fejlen før var, at med strlen() gav den længden 10, men tallene var i stregen 0-9!
Avatar billede jakobdo Ekspert
11. december 2005 - 20:12 #8
Altså:
$val = "0123";
længden af $val = 4
Men skal jeg hente dem en for en, så er det jo:
$val[0] = 0;
$val[1] = 1;
$val[2] = 2;
$val[3] = 3;

Og der vil ikke være nogen værdi på: $val[4]!
Avatar billede flim Nybegynder
11. december 2005 - 20:13 #9
Den nye er lagt op på siden, og kan måske bruges som inspiration for andre.

Tak for hjælpen .-)
Avatar billede jakobdo Ekspert
11. december 2005 - 20:29 #10
Problemet med denne løsning er jo så!
At det altid vil være:
STORT bogstav, lille bogstav og tal!
Det vil ikke være:
stort, lille, stort, tal, lille, tal osv...
Avatar billede flim Nybegynder
11. december 2005 - 21:06 #11
Det er selvfølgelig rigtig nok.

Der måtte gerne (hvis det kunne laves) have været fx 2 tal, 2 små, 1 stort, 1 tal, 2 store osv osv, så det ikke altid var den samme rækkefølge.

Men jeg er nu tilfreds med det.

Så det er kun hvis du selv vil videreudvikle på det at du skal rode mere med det :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester