Dies ist zwar eine Antwort auf die Frage von OP, aber wenn Sie nach etwas anderem suchen zufällig dann ist die Antwort von @danorton vielleicht besser geeignet.
Zum Beispiel so:
$val = '';
for( $i=0; $i<100; $i++ ) {
$val .= chr(rand(65, 90));
}
65 ist A
und 90 ist Z
. wenn Sie keine "magischen Zahlen" mögen, ist dieses Formular vielleicht besser lesbar:
$val = '';
for( $i=0; $i<100; $i++ ) {
$val .= chr(rand(ord('A'), ord('Z')));
}
Ich würde ord()
eine Variable und verschieben sie aus Leistungsgründen aus der Schleife heraus:
$A = ord('A');
$Z = ord('Z');
$val = '';
for( $i=0; $i<100; $i++ ) {
$val .= chr(rand($A, $Z));
}
Oder Sie könnten die Ausgabe von sha1()
s (drei davon) und auf 100 Zeichen gekürzt. Oder verwenden Sie md5()
stattdessen (aber ich würde mich an sha1()
).
EDIT sha1()
gibt eine 40 Zeichen lange Zeichenkette aus, md5()
32 Zeichen lang. Wenn Sie also nicht Zeichen für Zeichen kleben wollen (wie in der Schleife, die ich oben angegeben habe), versuchen Sie diese Funktion
function getId($val_length) {
$result = '';
$module_length = 40; // we use sha1, so module is 40 chars
$steps = round(($val_length/$module_length) + 0.5);
for( $i=0; $i<$steps; $i++ ) {
$result .= sha1(uniqid() . md5(rand());
}
return substr($result, 0, $val_length);
}
wobei das Funktionsargument die Länge der zurückzugebenden Zeichenkette ist. Aufruf getId(100);