PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eine unbekannte .txt-Datei öffnen und einlesen


rkersting
21.03.2005, 18:09:43
Hallo,

ich hänge an dem Problem, wie ich aus allen in einem Verzeichnis liegenden Dateien mit unterschiedlichsten Namen (aber Endung .txt) per Zufall eine auswähle und deren Inhalt einlese.

Meine Ansätze sind so:

<?php
$directory = "Beitraege/";
$handle = opendir($directory);
while ($file = readdir ($handle))
{if ($file != "." && $file != "..")
{$filecount++;}}
srand((double)microtime()*1000000); $zufall = rand(1,4);
?>

wobei ich bei folgenden Problem hängen bleibe:

- die Dateien haben unterschiedliche Namen, wie rufe ich per Zufall einen unbekannten Namen auf?
- wie verbinde ich die Zufallsfunktion mit einer Datei beim Aufruf

auch mein 2. Lösungsansatz

<?PHP

$verz=opendir ('.');
while ($file = readdir ($verz))
{
echo "
$file <br>";
}
closedir($verz);
?>

enthält das gravierende Problem, dass zwar der Inhalt des Verzeichnisses (Dateinamen) aufgelistet werden, aber der Schritt, hiervon eine zufällig zu öffnen und den Inhalt auszugeben fehlt eben.

Für Ansatzmöglichkeiten wäre ich sehr dankbar...

|Coding
21.03.2005, 18:20:07
schau mal, so könntest du es machen:
<?php
$directory = "Beitraege/";
$handle = opendir($directory);
while ($file = readdir ($handle)){
if ($file != "." && $file != ".." && !is_dir($file)){
$files[] = $file;
}
}
srand((double)microtime()*1000000);
$zufall = rand(0, (count($files) - 1));
print $files[$zufall];
?>

rkersting
21.03.2005, 18:44:24
Holla - das klappt gut!

Vielen Dank auch!

xabbuh
21.03.2005, 19:00:18
<?php
while ($file = readdir ($handle)){
?>
Diese Zeile würde ich eher so schreiben:

<?php
while(false !== ($file = readdir($handle))) {
}
?>

|Coding
21.03.2005, 19:04:14
funkt doch auch so :-P

xabbuh
21.03.2005, 20:29:44
Und wenn eine Datei mit dem Namen 0 darunter ist?! :-)

rkersting
21.03.2005, 20:34:59
äähh, ja was passiert denn, wenn eine datei mit Namen 0 darunter ist?

xabbuh
21.03.2005, 20:37:05
äähh, ja was passiert denn, wenn eine datei mit Namen 0 darunter ist?
Dann würde bei |Codings Beispiel die Schleife abgebrochen werden, was du aber mit der zusätzlichen Abfrage, die ich hinzugefügt habe, umgehen kannst.

|Coding
21.03.2005, 22:26:04
man muss ja nicht alles vorkauen :-)

xabbuh
21.03.2005, 22:26:53
man muss ja nicht alles vorkauen :-)
Um eine Ausrede bist du auch nie verlegen... ;-)

|Coding
21.03.2005, 22:31:03
nö, warum auch :-P

wenn ich erlich bin, habe ich das vollkommen übersehen... ist schon richtig, die expression noch mit rein zuhauen. das wird einem aber auch immer und überall er klärt und wenn ich nicht irre steht es sogar im manual oder bei den user-kommentaren.

xabbuh
21.03.2005, 22:33:38
das wird einem aber auch immer und überall er klärt und wenn ich nicht irre steht es sogar im manual oder bei den user-kommentaren.
Stimmt. :-) Ich wollte aber trotzdem lieber sicherheitshalber darauf hinweisen.

|Coding
21.03.2005, 22:45:07
ich sehe, wir ergänzen uns prima. was der eine übersieht, fällt dem anderen (i.d.R.) auf :-)

xabbuh
22.03.2005, 06:55:07
ich sehe, wir ergänzen uns prima. was der eine übersieht, fällt dem anderen (i.d.R.) auf :-)
Du solltest eine Firma aufmachen und mir 51% der Gewinne für Beratertätigkeiten überlassen. ;-)

|Coding
22.03.2005, 08:19:45
51%? ich glaub du hast deinen eigenen schrei lange nicht mehr gehört wa? :)

xabbuh
22.03.2005, 08:47:00
Aktienmehrheit würde mir auch schon reichen...

|Coding
22.03.2005, 08:53:19
nur über meine leiche :-)

rkersting
22.03.2005, 09:12:11
... also auch wenn Ihr hier jetzt die Preise diskutiert ... vielen Dank für die Antwort ;-)

meikel (†)
23.03.2005, 01:20:45
nur über meine leiche :-)
Ein Grund aber kein Hindernis... <ggg>

|Coding
23.03.2005, 01:24:29
jetzt achte ich lieber mal auf meinen rücken :-)