• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Zufälliges Wort aus Liste mit PHP?

eli93

Neues Mitglied
Hi, ich möchte das ein Zufälliges Wort aus eine Liste angezeigt wird.

Ich habe das so Versucht:

PHP auslese:
HTML:
<?php
$lines = file('Liste.txt');
print $lines[28];
?>

Zufalsgenerator:
HTML:
<?php
 srand((double)microtime()*1000000);
    echo rand(1,20);
?>

Die liste ist ganz einfach eine txt datei in der pro Zeile ein Wort steht

Ich habe dann versucht einfach den Code für den Zufallsgenerator da einzufügen wo wie Zeile angegeben wird. Aber das Klappt nicht kann mir da bitte jemand helfen?
 
Werbung:
Das sieht schonmal gut aus.
Code:
$lines = file('Liste.txt');[FONT=monospace]
[/FONT]

Du hast ja nun jede Zeile in einem Array stehen, beginnend bei lines[0]

so geht es weiter:

Code:
<?php   $zufall = rand(0,count($lines)-1);   ?>

Und dann einfach

Code:
echo $lines[$zufall];
 
hi,

funkt das der erste codeschnippsel?
wenn ja dann versuch das:
<?php $lines = file('Liste.txt');
$zufall = rand(1,20); print $lines[$zufall];
?> good Luck Mario
 
Werbung:
Um bei variabler Dateilänge keine Fehler zu bekommen, solltest du mit

$zufall = rand(0,count($lines)-1);

arbeiten.

skizz
 
Werbung:
is eine gute Idee, solltest du dir überlegen!
Dann musst du nicht immer den PHP-Code um schreiben, wenn du neue Zeilen einfühgst...

MfG Mario
 
Array_rand ist auch eine Möglichkeit. Das würde dann so aussehen:

PHP:
$lines = file('Liste.txt');
$rand_keys = array_rand($lines , 1);
echo $input[$rand_keys[0]];

MfG Mario
 
Werbung:
Fast.

If you are picking only one entry, array_rand() returns the key for a random entry. Otherwise, it returns an array of keys for the random entries.

PHP:
$lines = file('Liste.txt');
$rand_key = array_rand($lines); // Integer
echo $lines[$rand_key];

Dann könnte man noch die Rückgabe von file() etwas bereinigen, damit keine Zeilenumbrüche hinten in den einzelnen Array-Elementen stehen und etwaige leere Zeilen übersprungen werden.

PHP:
$lines = file('Liste.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

Optimaler wäre aber vermutlich noch das Anwenden von trim() auf jedes Array-Element, um auch etwaigen Whitespace am Zeilenanfang/-ende zu entfernen.

PHP:
$lines = array_map('trim',
             file('Liste.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));

$rand_key = array_rand($lines); // Integer
echo $lines[$rand_key];

Na ja, wie immer: Man kann ewig an wenigen Zeilen rumbasteln.
 
Zurück
Oben