Einträge in Textdatei auslesen lassen
anwin
- php
0 Tom0 Jeena Paradies0 anwin
Hallo Forum,
ich habe ein Problem.
Habe eine Textdatei (hier als beispiel "beispiel.txt" genannt).
In dieser Textdatei befinden sich etwa 100 Sätze, wie folgt:
(Beispiel)
1. Der Tag ist schön.
2. Gestern waren wir einkaufen
3. Vater war tagsüber nicht zuhause
4. Wenn ich groß bin, gehe ich zur Feuerwehr
5. ...
6. ...
7. ...
usw.
Jetzt möchte ich diese Zeilen in der Textdatei gerne via Zufallsprinzip auslesen lassen (geht auch von oben nach unten). Das heisst es geht darum bei jedem Refresh des Browsers z.B. einen anderen Text zu lesen.
Wie bekomme ich das hin? Ich weiss echt nicht weiter.
Kann mir dabei wohl bitte jemand helfen?
Gruss
anwin
Hello,
Kann mir dabei wohl bitte jemand helfen?
$filecontents = fget_contents('filename');
## hier Erfolgskontrolle
define('CRLF',chr(10)); # Für Unix-Dateien
$_sentence = explode(CRLF,$filecontents);
$count = count($_sentence);
$index = rand(0,$count);
Den Rest solltest Du selber hinbekommen
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo,
Jetzt möchte ich diese Zeilen in der Textdatei gerne via Zufallsprinzip auslesen lassen (geht auch von oben nach unten). Das heisst es geht darum bei jedem Refresh des Browsers z.B. einen anderen Text zu lesen.
Erst einmal brauchst du die Anzahl der Zeilen in dieser datei. Dazu laden wir der Einfachheit halber diese Datei komplett in ein Array, jede Zeile ein Eintrag:
$zeilen = file ('http://www.example.com/');
$anzahl = count($zeilen);
Dann brauchen wir eine Zufallszahl zwischen 0 und $anzahl:
mt_srand((double)microtime()*1000000); // nur bei PHP < 4.2.0 notwendig
$zufallszahl = mt_rand (0, $anzahl);
und jetzt geben wir eine zufällige Zeile aus, das heißt wir geben ein zufälliges Item aus dem Array mit allen Zeilen aus:
echo "<p>".$zeilen[$zufallszahl]."</p>";
Das sollte dann auch schon funktionieren und ist die einfach zu verstehende aber nicht die schnellste Variante.
Jeena
Irgendwie klappt das nicht (bin PHP-Laie)
ich habs mal so probiert wie im Beispiel:
$zeilen = file ('http://www.webseite.de/beispiel.txt');
$anzahl = count($zeilen);
mt_srand((double)microtime()*1000000);
$zufallszahl = mt_rand (0, $anzahl);
Muss ich das jetzt als php file speichern?
und diese Zeile kommt in die HTML Seite?
echo "<p>".$zeilen[$zufallszahl]."</p>";
Kann die Textdatei (beispiel.txt) denn einfach so wie in meinem Anfangsbeitrag nummeriert werden?
Ich versteh echt nur Bahnhof momentan.
Gruss
anwin
Hallo,
$zeilen = file ('http://www.webseite.de/beispiel.txt');
Hm sorry beim kopieren habe ich nicht gesehen dass da noch ne URL drinn ist, da sollte lieber der Pfad zur beispiel.txt drinn sein. Also eher:
$zeilen = file("beispiel.txt");
$anzahl = count($zeilen);
$zufallszahl = mt_rand (0, $anzahl);
Muss ich das jetzt als php file speichern?
Ja.
und diese Zeile kommt in die HTML Seite?
echo "<p>".$zeilen[$zufallszahl]."</p>";
Nein, das muss auch in eine PHP-Datei, sonst wird es ja nicht ausgeführt. Die PHP Datei könnte zum Beispiel so aussehen (in Kurzschreibweise):
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Eine Zufallszahl aus beispiel.txt</h1>
<p>[code lang=php]<?php $z = file("beispiel.txt");
echo $z[mt_rand(0, count($z))]; ?>
</p>
</body>
</html>[/code]
Kann die Textdatei (beispiel.txt) denn einfach so wie in meinem Anfangsbeitrag nummeriert werden?
Wenn es dir nichts ausmacht dass die Zahlen ausgegeben werden dann ja. Wenn die Zahlen nicht ausgegeben werden sollen dann musst du sie vorher abschneiden.
Jeena
Hm sorry beim kopieren habe ich nicht gesehen dass da noch ne URL drinn ist, da sollte lieber der Pfad zur beispiel.txt drinn sein. Also eher:
$zeilen = file("beispiel.txt");
$anzahl = count($zeilen);
$zufallszahl = mt_rand (0, $anzahl);
>
> > Muss ich das jetzt als php file speichern?
> Ja.
das versteh ich irgendwie nicht. Wenn ich das als php datei speichern soll und sie z.B. "beispiel.php" nenne...
> Die PHP Datei könnte zum Beispiel so aussehen (in Kurzschreibweise):
>
> ~~~html
> <html>
> <head>
> <title>Test</title>
> </head>
> <body>
> <h1>Eine Zufallszahl aus beispiel.txt</h1>
> <p>[code lang=php]<?php $z = file("beispiel.txt");
> echo $z[mt_rand(0, count($z))]; ?>
</p>
</body>
</html>[/code]
wo wird denn in dieser php- Seite auf das obere hingewiesen. Also ich meine, wo muss denn das obere hin? Bitte nicht böse sein, aber ich kapiers einfach nicht.
Gruss
anwin
hi,
das versteh ich irgendwie nicht. Wenn ich das als php datei speichern soll und sie z.B. "beispiel.php" nenne...
wo wird denn in dieser php- Seite auf das obere hingewiesen.
Gar nicht, weil das Obere schon - in leicht verkürzter Schreibweise - im Unteren drinsteht ...
gruß,
wahsaga
danke... es funktioniert jetzt.
Habe noch eine Frage zu der Nummerierung:
Wie bekomme ich die Zahlen dann vor den Sätzen weg?
Zitat:
Kann die Textdatei (beispiel.txt) denn einfach so wie in meinem Anfangsbeitrag nummeriert werden?
Wenn es dir nichts ausmacht dass die Zahlen ausgegeben werden dann ja. Wenn die Zahlen nicht ausgegeben werden sollen dann musst du sie vorher abschneiden.
Was muss ich dem Quelltext hinzufügen um die Nummerierung vor den Sätzen wegzubekommen?
Gruss
anwin
hi,
Wenn es dir nichts ausmacht dass die Zahlen ausgegeben werden dann ja. Wenn die Zahlen nicht ausgegeben werden sollen dann musst du sie vorher abschneiden.
Was muss ich dem Quelltext hinzufügen um die Nummerierung vor den Sätzen wegzubekommen?
Lass dir jetzt bitte nicht alles vorkauen.
Schau dir die Stringfunktionen von PHP an, was da Passendes dabei sein könnte für diesen Zweck. (Ggf. auch eine Kombination von mehreren.)
gruß,
wahsaga
Lass dir jetzt bitte nicht alles vorkauen.
Tut mir leid, ich habe lediglich ein Problem und als jemand der mit webentwicklung normalerweise nix am Hut hat, dachte ich ich frage hier...
Schau dir die Stringfunktionen von PHP an, was da Passendes dabei sein könnte für diesen Zweck. (Ggf. auch eine Kombination von mehreren.)
Ich denke jemand der zuvor niemals etwas mit PHP gemacht hat, ist das sehr verwirrend. Für mich also überhaupt nicht nachvollziehbar.
Ich wüsste auch nicht, wonach ich suchen sollte und auf der verlinkten php-Seite ist für mich alles böhmische Dörfer.
Denn nun stehe ich wieder da, wo ich am Anfang auch war.
Gruss
anwin
hi,
Tut mir leid, ich habe lediglich ein Problem und als jemand der mit webentwicklung normalerweise nix am Hut hat, dachte ich ich frage hier...
Wenn du ohne selber etwas Mühe zu investieren zu einem Ergebnis kommen willst, dann ist das weniger ein Fall für SELF, sondern eher für http://www.gelbeseiten.de/.
Schau dir die Stringfunktionen von PHP an, was da Passendes dabei sein könnte für diesen Zweck. (Ggf. auch eine Kombination von mehreren.)
Ich denke jemand der zuvor niemals etwas mit PHP gemacht hat, ist das sehr verwirrend. Für mich also überhaupt nicht nachvollziehbar.
Dann lass dir Zeit.
Niemand verlangt von dir, das Ergebnis in fünf Minuten oder auch nur heute Abend fix und fertig zu haben. (Oder?)
Ich wüsste auch nicht, wonach ich suchen sollte
Nach Funktionen, die dir erlauben etwas aus einem Textstring auszuschneiden, und ggf. noch nach einer, die dir erlaubt die Position des Auftauchens bestimmter Zeichen zu ermitteln - damit du weisst, wie viel du Abschneiden musst. (Denn diese Anzahl bleibt ja nicht immer gleich, aus einstelligen werden zwei- oder mehrstellige Zahlen.)
gruß,
wahsaga
Hallo,
Was muss ich dem Quelltext hinzufügen um die Nummerierung vor den Sätzen wegzubekommen?
Deine Zeilen sehen so aus dass erst eine Zahl kommt, dann ein Punkt gefolgt von einem Leerzeichen und danach das was ausgegeben werden muss:
142. Das hier wird ausgegeben. Und das hier auch.
Der Trick dabei kann sein das in zwei Teile genau an der Stelle wo der erste Punkt gefolgt von einem Leerzeichen ist. Das kann man zum Beispiel mit der Funktion explode() machen (die zahl ist dazu da damit beim zweiten vorkommen von "punkt leerzeichen" nicht noch einmal getrennt wird):
$geteilt = explode(". ", "142. Das hier wird ausgegeben. Und das hier auch.", 2);
Die Variable $geteilt ist jetzt ein Array mit zwei Einträgen. Erstens das was links von "punkt leerzeichen" steht und zweitens das was rechts davon steht. Überprüfen kann man das zum Beispiel mit:
print_r($geteilt);
Wenn du den zweiten Teil haben möchtest musst du auf das zweite Item des Arrays zugreifen (man fängt das zählen bei 0 anstatt bei 1 an.):
echo $geteilt[1];
Das ganze könnte dann zum Beispiel so aussehen:
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Eine Zufallszahl aus beispiel.txt</h1>
<p>[code lang=php]<?php
$z = file("beispiel.txt");
$geteilt = explode(". ", $z[mt_rand(0, count($z))], 2);
echo $geteilt[1]; ?>
</p>
</body>
</html>[/code]
Jeena
Das ist für mich toll nachvollziehbar...
vielen dank
gruss
anwin