PHP Zufallsstring
Übersicht

![]() |
Der EisvogelBetreff: PHP Zufallsstring |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich möchte in PHP einen Zufallsstring erstellen. Dafür habe ich mir folgende Funktion geschrieben: Code: [AUSKLAPPEN] // Zufalls-String
function getRandomString($len) { $characters = '0123456789abcdefghijklmnopqrstuvwxyz'; $str = ''; for ($i = 0; $i < $len; $i++) { $str .= $characters[mt_rand(0, strlen($characters)) - 1]; } echo strlen($str).'<br>'.$str."<br>"; return $str; } Die Funktion sollte einen String der Länge $len mit den Zeichen aus $characters zurück geben. Das Problem ist, dass ich nur manchmal einen String der Länge $len erhalte. Meistens liegt die Länge unter $len. Und ich versteh nicht wieso. Weiß einer von euch was ich da falsch mache? MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: $str .= $characters[mt_rand(0, strlen($characters)) - 1];
Das Ergebnis von mt_rand(0, strlen($characters)) geht vom ersten Zeichen (0) bis eins nach dem letzten (strlen($characters)). Entweder du fängst bei 1 an oder du ziehst das -1 zu strlen($characters). ZEVS |
||
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auweia. Ich war in einem völlig falschen Film. Danke dir!
Das "-1" gehört eigentlich ind den Aufruf von mt_rand. Bin grad am Objective-C lernen und da bin ich wohl mit den eckigen Klammern durcheinander gekommen. Da zerbricht man sich den Kopf ewig lang drüber und dann war es doch nur ein Leichtsinnsfehler. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist das nicht immer so?
Man übersieht die einfachsten dinge ![]() Wenn ich mal fragen darf, wieso gibt das überhaupt einen string wieder? $str .= $characters[mt_rand(0, strlen($characters)) - 1]; -> es kann ein index von -1 rauskommen. Normalerweise kenne ich das so, das es einen zugriffsfehler gibt und alles abschmiert. Bricht php stattdessen einfach die schleife ab und fährt dann fort, als sei nix gewesen? |
||
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, PHP ist ja sozusagen eine Skripsprache. Es wirft in so einem Fall zwar Exceptions, aber in der Regel sind die aber low level, weshalb sie einfach ignoriert werden. Man kann das mit error_reporting zwar alles aktvieren, ist aber nicht immer so sinnvoll. Da ich diesen Code in einem phpBB verwende, konnte ich es nicht aktivieren, da sonst das gesamte phpBB nicht läuft weil es viele dieser Exceptions wirft. Was genau PHP in so einem Fall dann macht, weiß ich nicht, aber es scheint weiter zu machen. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group