Inhalte einer Textdatei auslesen und nutzen
xpfreund
- php
Hallo,
Ich möchte eine Textdatei einlesen. Wie? Steht ja hier: http://de.selfhtml.org/navigation/faq.htm#daten_einbinden
Die Datei *.txt hat folgendes Format:
09.06.0320:57RECV00000052faxCAPI fax 60252 00493575660247 267 1 0:18 0:18 fax00011
Steht alles in einer Zeile, Abstände bleiben. Jetzt die Frage: Was muss ich tun, damit das Datum 09.06.03 , die Uhrzeit und die ganzen anderen Teile in Strings gespeichert werden, damit ich diese individuell als Liste auf dem Bildschirm ausgeben kann?
gruß aus Hosena
Hallo xpfreund,
Ich möchte eine Textdatei einlesen. Wie? Steht ja hier: http://de.selfhtml.org/navigation/faq.htm#daten_einbinden
Werde dir erst mal darüber klar, was du willst.
Du hast als Thema PHP gewählt und verlinkst nun auf eine Seite, die das mit JavaScript umsetzen will.
Steht alles in einer Zeile, Abstände bleiben. Jetzt die Frage: Was muss ich tun, damit das Datum 09.06.03 , die Uhrzeit und die ganzen anderen Teile in Strings gespeichert werden, damit ich diese individuell als Liste auf dem Bildschirm ausgeben kann?
Funktionen, die du für dein Vorhaben benötigen wirst:
JavaScript: split, substr, indexOf/search
PHP: fopen/file, explode, substr, strpos oder gleich mit preg_match...
Gruß,
Dodwin
Hallo,
Ich möchte eine Textdatei einlesen. Wie? Steht ja hier: http://de.selfhtml.org/navigation/faq.htm#daten_einbinden
Werde dir erst mal darüber klar, was du willst.
Du hast als Thema PHP gewählt und verlinkst nun auf eine Seite, die das mit JavaScript umsetzen will.
Hab ich gesagt, dass ich ausgerechnet Javascript dafür nehmen will, dort gibt es schließlich noch mehr Möglichkeiten.
Steht alles in einer Zeile, Abstände bleiben. Jetzt die Frage: Was muss ich tun, damit das Datum 09.06.03 , die Uhrzeit und die ganzen anderen Teile in Strings gespeichert werden, damit ich diese individuell als Liste auf dem Bildschirm ausgeben kann?
Funktionen, die du für dein Vorhaben benötigen wirst:
JavaScript: split, substr, indexOf/search
PHP: fopen/file, explode, substr, strpos oder gleich mit preg_match...
gruß aus Hosena
Hallo xpfreund,
Hab ich gesagt, dass ich ausgerechnet Javascript dafür nehmen will, dort gibt es schließlich noch mehr Möglichkeiten.
Oh, richtig. Im vorletzen Absatz steht auch was von PHP.
Wobei du die Dinge, die in dem Text stehen, wie require oder include nicht brauchen wirst.
Am Besten liest du es dann mit file ein und gehst Zeile für Zeile durch. Am einfachsten wäre dies mit preg_match. Aber du kannst natürlich auch einfach per strpos die entsprechenden Leerzeichen suchen und das Datum so extrahieren.
Gruß,
Dodwin
Hallo,
Aber du kannst natürlich auch einfach per strpos die entsprechenden Leerzeichen suchen und das Datum so extrahieren.
Gut, aber zwischen Datum und Uhrzeit ist ja kein Leerzeichen.
gruß aus Hosena
Hallo xpfreund,
Gut, aber zwischen Datum und Uhrzeit ist ja kein Leerzeichen.
Aber du weißt doch die Länge des Datums und der Uhrzeit.
Es ist immer 8 Zeichen lang.
Also strpos($foo,0,8) wäre dann dein Datum und strpos($foo,8,5) die Uhrzeit.
Gruß,
Dodwin
Hallo,
Wenn ich das so mache: <?php $lines = file('faxview.txt');
foreach ($lines as $neu ) {
$date = substr($neu, 0, 8);
echo $date;
}
?> wird zwar das Datum jeder Zeile ausgegeben, allerdings hintereinander weg, ohne Leerzeichen und auf einer Zeile. Wie mach ich das jetzt, dass jedes Datum in einer neuen Zeile angezeigt wird?
gruß aus Hosena
Wie mach ich das jetzt, dass jedes Datum in einer neuen Zeile angezeigt wird?
Füge einen Zeilenumbruch ein.
Siechfred
echo $begrüßung;
Wenn ich das so mache:
echo $date;
?> wird zwar das Datum jeder Zeile ausgegeben, allerdings hintereinander weg, ohne Leerzeichen und auf einer Zeile. Wie mach ich das jetzt, dass jedes Datum in einer neuen Zeile angezeigt wird?
Indem du eine Ausgabe hinzufügst, die eine neue Zeile erzeugt. Das hängt von der verwendeten Umgebung ab. In Text-Dateien wird ein Zeilenumbruchszeichen verwendet (oder auch mehrere, je nach System). HTML kennt dafür das br-Element.
echo "$verabschiedung $name";
Hallo,
Der echo $date - Befehl wurde nur einmal ausgeführt und eigenartigerweise jede Zeile des Arrays abgearbeitet (also immer Zeichen 0-8) und hintereinander ausgegeben. Die Textdatei enthält immer eine neue Zeile pro Datum.
gruß aus Hosena
Hallo xpfreund,
Der echo $date - Befehl wurde nur einmal ausgeführt und eigenartigerweise jede Zeile des Arrays abgearbeitet (also immer Zeichen 0-8) und hintereinander ausgegeben. Die Textdatei enthält immer eine neue Zeile pro Datum.
Falsch. "echo $date" steht in einer Schleife und wurde daher bei jedem Schleifendurchlauf ausgeführt.
Wenn du auch noch einen Zeilenumbruch willst schreibe:
foreach ($lines as $neu) {
$date = substr($neu, 0, 8);
echo $date.'<br>';
}
Gruß,
Dodwin
Hallo,
Falsch. "echo $date" steht in einer Schleife und wurde daher bei jedem Schleifendurchlauf ausgeführt.
Woraus liest du, dass das in einer Schleife steht? Schleifen sind doch normalerweise mit for oder while begonnen. Ich habe einfach den obigen Text in einer neuen Datei gespeichert und ausgeführt, da kam das genannte Problem.
Wenn du auch noch einen Zeilenumbruch willst schreibe:
foreach ($lines as $neu) {
$date = substr($neu, 0, 8);
echo $date.'<br>';
}
gruß aus Hosena
Hallo xpfreund,
Woraus liest du, dass das in einer Schleife steht? Schleifen sind doch normalerweise mit for oder while begonnen.
foreach ($lines as $neu) {
^^^
for?
Gruß,
Dodwin
Hallo,
Ok, liegt an foreach. Aber wie bekomme ich jetzt die anderen Teile auf die gleiche Zeile? br beendet ja die Zeile.
gruß aus Hosena
Hallo xpfreund,
Ok, liegt an foreach.
Okay. Hab ich das Posting umsonst losgeschickt...
Aber wie bekomme ich jetzt die anderen Teile auf die gleiche Zeile? br beendet ja die Zeile.
echo $date.' ';
Gruß,
Dodwin
Hallo,
Zu dem Zeitpunkt war noch nicht aktualisiert, macht er ja nur alle 2 Minuten den meta refresh des Forums.
gruß aus Hosena
Hallo xpfreund,
Zu dem Zeitpunkt war noch nicht aktualisiert, macht er ja nur alle 2 Minuten den meta refresh des Forums.
1. Es gibt keinen Meta-Refresh im Forum, wenn es nicht über die Benutzereinstellungen gewünscht ist
2. Du kannst nicht wissen ob die Seite zu dem Zeitpunkt in meinem Browser noch nicht aktualisiert war. Sie war es, ich habe das Posting schlicht und einfach übersehen.
3. Ich kann auch ohne ein(en?) Meta-Refresh die Seite neuladen
*SCNR*
Gruß,
Dodwin
Hallo,
- Es gibt keinen Meta-Refresh im Forum, wenn es nicht über die Benutzereinstellungen gewünscht ist
hab ich ja alle min eingestellt
- Du kannst nicht wissen ob die Seite zu dem Zeitpunkt in meinem Browser noch nicht aktualisiert war. Sie war es, ich habe das Posting schlicht und einfach übersehen.
das stimmt
- Ich kann auch ohne ein(en?) Meta-Refresh die Seite neuladen
dann musst du aber selbst auf aktualisieren klicken
gruß aus Hosena
Hallo Hugo,
Ok, liegt an foreach. Aber wie bekomme ich jetzt die anderen Teile auf die gleiche Zeile? br beendet ja die Zeile.
es sieht so aus, als lägen Dir in Deiner Ausgangsdatei tabellarische Daten vor (Fritzfax-Protokoll oder so was ähnliches?). Tabellarische Daten gibst Du am allerbesten in einer Tabelle aus.
Prinzipielle Vorgehensweise:
Eingabe: Lese Textdatei in ein Array ein
Verarbeitung: Erzeuge aus jeder Zeile des Arrays ein Array mit den
diversen Dich interessierenden Informationen
Ausgabe: Gib das neue Array in einer HTML-Tabelle aus.
Jede Zeile der Ausgangsdatei entspricht einem <tr>-Element
Jeder Eintrag in einer Zeile einem <td>-Element
Wenn Speicher ein Problem sein sollte, dann verarbeite die Daten zeilenweise,
d.h. lies jeweils eine Zeile ein, verarbeite diese Zeile, gebe sie aus.
Freundliche Grüße
Vinzenz
Hallo,
es sieht so aus, als lägen Dir in Deiner Ausgangsdatei tabellarische Daten vor (Fritzfax-Protokoll oder so was ähnliches?). Tabellarische Daten gibst Du am allerbesten in einer Tabelle aus.
zumindest ist es ein Faxprotokoll
Prinzipielle Vorgehensweise:
Eingabe: Lese Textdatei in ein Array ein
klar, über file()
Verarbeitung: Erzeuge aus jeder Zeile des Arrays ein Array mit den
diversen Dich interessierenden Informationen
Wie mach ich jetzt aus dem gesamten Array ein einzelnes pro Zeile.
<?php $lines = file('faxview.txt');
foreach ($lines as $neu ) {
$date = substr($neu, 0, 8);
$time = substr($neu, 8, 5);
$send = substr($neu, 13, 4);
$id = substr($neu, 17, 8);
$driver = substr($neu, 25, 7);
$user = substr($neu, 42, 15);
echo $date.' ';
echo $time.' ';
echo $send.' ';
echo $id.' ';
echo $driver.' ';
echo $user.'<br>'
}
?>
Mit der Methode geht es zwar, es scheint mir nur nicht gerade die beste Lösung zu sein.
Ausgabe: Gib das neue Array in einer HTML-Tabelle aus.
Jede Zeile der Ausgangsdatei entspricht einem <tr>-Element
Jeder Eintrag in einer Zeile einem <td>-Element
mit Tabellen habe ich mich noch nicht großartig beschäftigt.
gruß aus Hosena
Hallo xpfreund,
Wie mach ich jetzt aus dem gesamten Array ein einzelnes pro Zeile.
Du hast scheinbar noch nicht wirklich Ahnung von Arrays.
Am Besten liest du dir dazu mal ein paar Informationen durch (siehe php.net, o.Ä. Google hilft...)
Aber ich verstehe gar nicht, warum da nochmal ein Array erzeugt werden soll, das verbraucht doch nur Speicher+Zeit.
Ich würde es (wenn es später nicht mehr geordnetet werden soll) einfach ausgeben:
<table...>
<?php $lines = file('faxview.txt');
foreach ($lines as $neu ) {
$date = substr($neu, 0, 8);
$time = substr($neu, 8, 5);
$send = substr($neu, 13, 4);
$id = substr($neu, 17, 8);
$driver = substr($neu, 25, 7);
$user = substr($neu, 42, 15);
echo '<tr><td>'.$date.'</td><td>'.$time.'</td><td>'.$send.'</td><td>'.$id.'</td><td>'.$driver.'</td><td>'.$user.'</td></tr>';
}
?>
</table>
Gruß,
Dodwin
gudn tach!
Die Datei *.txt hat folgendes Format:
09.06.0320:57RECV00000052faxCAPI fax 60252 00493575660247 267 1 0:18 0:18 fax00011Steht alles in einer Zeile, Abstände bleiben.
du hast also eine textdatei mit genau einer zeile, die von zeit zu zeit aktualisiert wird? heisst "abstaende bleiben", dass die anzahl der leerzeichen dazwischen ueber die zeit konstant ist oder dass die anfaenge der jeweiligen daten immer gleich bleibt.
also wird eine naechste zeile eher so aussehen
09.06.0320:58panzer panzer 123 [...] (gleiche relative abstaende wie oben)
oder eher so
09.06.0320:58panzer panzer 123 [...] (gleiche absolute positionen)
?
im ersten fall waere interessant, ob die jeweiligen daten leerzeichen enthalten duerfen. falls nicht koenntest du einfach die zeile mit / +/ splitten.
im zweiten fall koenntest du die datei mit file() einlesen und mit substr() die jeweiligen daten rausholen.
prost
seth
Hallo,
Die Datei *.txt hat folgendes Format:
09.06.0320:57RECV00000052faxCAPI fax 60252 00493575660247 267 1 0:18 0:18 fax00011Steht alles in einer Zeile, Abstände bleiben.
du hast also eine textdatei mit genau einer zeile, die von zeit zu zeit aktualisiert wird? heisst "abstaende bleiben", dass die anzahl der leerzeichen dazwischen ueber die zeit konstant ist oder dass die anfaenge der jeweiligen daten immer gleich bleibt.
also wird eine naechste zeile eher so aussehen
09.06.0320:58panzer panzer 123 [...] (gleiche relative abstaende wie oben)
oder eher so
09.06.0320:58panzer panzer 123 [...] (gleiche absolute positionen)
Nein, die nächste Zeile sieht genauso mit den festen Abständen aus, nur das dann Datum und Zeit beispielsweise anders sind. Die Zeilen werden nicht aktualisiert, sondern es wird eine neue Zeile von einem externen Programm des Servers eingefügt.
im ersten fall waere interessant, ob die jeweiligen daten leerzeichen enthalten duerfen. falls nicht koenntest du einfach die zeile mit / +/ splitten.
im zweiten fall koenntest du die datei mit file() einlesen und mit substr() die jeweiligen daten rausholen.
Gilt nicht substr nur für Strings?
gruß aus Hosena
Hallo xpfreund,
im zweiten fall koenntest du die datei mit file() einlesen und mit substr() die jeweiligen daten rausholen.
Gilt nicht substr nur für Strings?
file() erzeugt ein Array.
Das Array beinhaltet (in deinem Fall) die String mit den Zeilen.
Auf die einzelnen Array-Elemente kannst du die Funktion also anwenden.
Gruß,
Dodwin