Inhalt einer Datei ab einem Fixpunkt einlesen
Hallo,
ich habe ein Problem. Ich möchte aus unterschiedlichen Textdateien, die von Usern per Dateiupload in ein Verzeichnis gelegt werden, einen Ausschnitt des Inhalts per PHP in einer Datei ausgeben. Die txt-Dateien haben grundsätzlich unterschiedlichste Strukturen, so dass ein einlesen erst ab der 5 bis 10. Zeile Sinn macht. Dann soll eine Ausschnitt herausgezogen werden, z.B. 20 Zeilen. Die Probleme sind: 1) die Datei hat unter Umständen gar keine 5 Zeilen - wie vermeide ich dann für die Startsequnz eine Fehlermeldung und springe zur nächsten Datei? 2) Wenn die Datei 5 Zeilen Einführung hat, aber der Inhalt keine 20 Zeilen lang ist, wie vermeide ich dann die Fehlermeldung und lese einfach weniger Zeilen, oder, wenn unlösbar, wie springe ich dann zur nächsten Datei? Sie Basis ist denke ich mit bekannten Lösungen, wei Zufallszitaten, denkbar, da die ausgewählte datei auch immer zufällig ausgewählt werden soll, also keine Reihenfolge bestehen soll. <?php srand ((double) microtime() * 1000000); $zitate = file("daten/quote.dat"); $i = count($zitate)-1; print $zitate[rand(0,$i)]; ?> Nur wird hier natürlich nur aus einer datei etwas zufällig eingelesen und es spielt keine Rolle, wie lang es ist ... Kann mir jemand einen Tipp geben? Bitte ... Vielen Dank! |
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
Zitat:
Zitat:
Ein Beispiel: PHP-Code:
|
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
Hallo,
vielen Dank für die schnelle Hilfe ... aber ich habe es mal so umgesetzt: <?php $content = file('data.txt'); if(count($content) >= 5) { $extract = array_slice($content, 2, 5); } echo $extract; ?> und bekomme als Ausgabe nur: Array wo liegt das Problem? Wobei data.txt eine normale txt-Datei mit z.B. einem Tagebucheintrag von ca. einer DIN A4 Seite ist, mit Leerzeilen, Zeilenumbrüchen, Soderzeichen wie z.B. "" etc., also eben eine ganz normale Textdatei. |
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
array_slice liefert als rückgabe wert ein array, keine variable.
du musst also noch ein implode() einbauen, das dir die array elemente zu einem string zusammen setzt. so etwa: PHP-Code:
|
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
Der Rückgabewert von [func]array_slice()[/func] ist ein Array. Wenn du dir dieses anzeigen lassen willst, musst du entweder die Funktionen [func]print_r()[/func] oder [func]var_dump()[/func] benutzen.
|
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
Jaaa - so sieht das gut aus ;-)
Vielen Dank! |
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
welche variante hascht du denn jetzt genommen?
|
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
da ich lieber mit echo als mit print arbeite (die Grundsätzlichen Vor- und nachteile sind mir allerdings nicht bekannt, bzw. haben sich mir noch nicht erschlossen ...) habe ich folgendes gebaut:
<?php $content = file('data.txt'); if(count($content) >= 30) { $extract = array_slice($content, 10, 20); } $inhalt = implode('', $extract); echo "<p> <b>Auszug aus dem Beitrag:</b> ... ".$inhalt." ... <b>Ende des Auszugs</b></p>"; ?> .. das klappt ganz prima ... allerdings, jetzt wo ich dabei bin ... es gibt ja noch ein Problem: - in dem Verzeichnis liegen jede Menge Dateien mit unterschiedlichsten Namen, aber alle .txt. Nun soll ja bei jedem Aufruf eine zufällig ausgewählte Datei auszugsweise angezeigt werden. Ich dachte hier etwas aus dem Zufallszitate herauszubasteln, aber gibt es eine elegante Lösung dafür (ohne die von mir regelmässig erzeugten unmengen Code für Variablen etc. ... Das wäre noch mal super, wenn mir einer da auch noch helfen würde. Vielen Dank. |
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
Lies das Verzeichnis, in dem die Dateien liegen, in ein Array ein und wähle per Zufall eines der Elemente aus dem Array aus.
|
AW: Inhalt einer Datei ab einem Fixpunkt einlesen
nun ja, print ist gegenüber echo eine richtige funktion. print kann immer verwendet werden, echo aber nicht z.b. dann, wenn ein rückgabewert erwartet wird, wie beim trinären bindungsoperator:
PHP-Code:
(anderer datentype: $a integer, $b string) PHP-Code:
der grund: echo ist ein sprachkonstrukt und liefert keine rückgabe. abgesehen davon, dass print eine funktion und echo ein sprachkonstrukt ist und das print einen rückgabewert liefert, gibt es keine weiteren unterschiede. da die ausgabe eh immer der schnellste teile eines scripts ist, ist es am ende dein bier, ob du echo oder print nutzt. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:47:29 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.