Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 30-06-2009, 14:49
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RamonaS Beitrag anzeigen
Ich habe aber bereits folgendes über diese daten laufen:
PHP-Code:
$arr=@file("logdatei.txt");
$arr=str_replace(array("\r","\n","\r\n"),array("","",""),$arr); 
...und trotzdem zwerschießt es mir die textdatei.
Nein, die ist bereits "zerschossen".

Was macht file()? Es liefert dir ein Array, in dem jedes Element eine einzelne Zeile enthält, inkl. des Umbruchs am Ende dieser Zeile.
str_replace nimmt sich jetzt jede dieser Zeilen einzeln vor, und ersetzt Umbruchzeichen - die es aber nur noch am Zeilenende findet.
Das "klebt" aber keine Daten wieder zusammen, die bereits fehlerhafter weise in mehrere Zeilen aufgeteilt sind.
Zitat:
Es müßen also noch andere zeichen geben, die einen zeilenumbruch auslösen!
Nein, tut es nicht. Aber dein Versuch, das Problem zu beheben, ist in der Form nicht sinnvoll.

Selbst wenn du alle Zeilenumbrüche ersetzt - dann hast du nachher nur noch eine einzige Zeile, das kann auch kaum das sein, was du willst.
Du müsstest dir also erst mal ein Verfahren überlegen, unerwünschte von erwünschten Zeilenumbrüchen zu unterscheiden - und das ist vermutlich gar nicht so einfach, da müsste schon ein aufwendigerer regulärer Ausdruck oder sowas in der Art her, der ein Muster definiert, mit dem alle Log-Zeilen vollständig erfassbar sind.
EDIT:
OK, so kompliziert ist es vielleicht gar nicht. Wenn jede Log-Zeile mit einer IP-Adresse beginnt, dann könnte man die eingelesenen Zeilen darauf prüfen, ob sie mit etwas beginnen, das einem solchen Muster entspricht. Wenn ja, ist es ein "echter" Zeilenanfang, wenn nein, dann sind die Daten dieser Zeile an die vorherigen anzufügen. Das geht natürlich nur dann, wenn in den Daten ausser am Anfang eines Datensatzes nichts vorkommt, was dem Muster einer IP-Adresse entspricht.


Mein Vorschlag: Dateiinhalt manuell korrigieren, wenn die Anzahl der Datensätze das noch erlaubt - oder wegwerfen, und nach Behebung des Programmierfehlers mit einer neuen Statistik anfangen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.

Geändert von wahsaga (30-06-2009 um 14:52 Uhr)
Mit Zitat antworten