Neuigkeiten:

still alive...

Hauptmenü

Kontrollierte Datei-Umschlichtung

Begonnen von rüdicher, 14. Februar 2005, 09:17:16

Vorheriges Thema - Nächstes Thema

rüdicher

Mein Problem:
Eine Datei ist mit Einträgen (Zeilen) und jeweils einem Datum versehen.
Im Durchlauf einer Schleife sollen die Einträge in eine neue Datei
übernommen, die veralteten jedoch anhand ihres Datums (liegt mindestens
einen Tag zurück), ausgelassen werden. Die Inhalte dieser Datei
sind bereits korrekt zeilenweisse in das Array $content eingelesen.
Alle weiteren Vorgaben sind den zahlreichen Kommentaren zur Erläuterung
im Quelltext zu entnehemen.
Mein Quelltext:
# Eine neue zu beschreibende Datei \"copy.txt\" wird angelegt:
$copy=fopen(\"copy.txt\", \"w\");
# $content ist ein bereits bestehendes Array das mit den Zeilen
# belegt ist, die aus einer Datei stammen. Diese sehen wie folgt aus:
# z.B.
#
# acl Fri__04_02_23 src \"./23.acl\" ##Thu, 03.02.
# acl Fri__04_02_ time F 07:50-09:30 ##Thu, 03.02.
# http_access allow Fri__04_02_23r Fri__04_02_ ##Thu, 03.02.
#
# Dabei sind die Einträge immer in solche 3-zeiligen Absätze unterteilt,
# es handelt sich um ACLs (Acces Control List) die anhand
# des angehängten Datums auf Veraltung geprüft werden sollen.
# Jede einzelne Zeile wird durchlaufen:
foreach($content as $key => $value)
{
$writeenable=true;
# Datum am Ende jeder Zeile wird ermittelt
# und in $d_datecomp festgehalten:
$d_datecomp=strrchr($content[$key], \"#\");
$d_datecomp=trim($d_datecomp);
for($counter=1; $counter<=30; $counter++)
{
# Jedes Datum der letzten 30 Tage wird ermittelt,
# auf die selbe Form wie $d_datecomp gebracht
# und in $v_datecomp festgehalten:
$v_datecomp= mktime(0,0,0,date(\"m\"),date(\"d\")-$counter, date(\"Y\"));
$v_datecomp=date(\"D, d.m.\", $v_datecomp);
$v_datecomp=\"#\".$v_datecomp;
$v_datecomp=trim($v_datecomp);
# Anschließender Vergleich:
# Datum ermittelt = Datum Zeilenende?
if($v_datecomp==$d_datecomp)
{
# Bei Zutreffen ist der Zeileneintrag veraltet,
# soll nicht in die neue Datei übernommen werden:
$writeenable=false;
}
}
# Soll die jeweilige Zeile geschrieben werden?
if($writeenable==true)
{
fwrite($copy, $value);
}
}
fclose($copy);
 
Meine Fehlerbeschreibung:
Es gelingt zwar, die Einträge vom Array in die neue Datei umzuschlichten,
auch gelingt es dabei die veralteten Einträge auszulassen, jedoch wird
der letzte Absatz, also die letzten 3 zusammengehörigen Zeilen, egal
ob veraltet oder nicht, nicht mit in die Datei übernommen.
Der Fehler kann nicht beim Array liegen, das habe ich bereits geprüft,
ich könnte mir nur noch vorstellen, dass schleifentechnisch etwas falsch
läuft. Trotzdem kann ich mir den Fehler nicht erklären und hoffe,
dass mir von euch bald weitergeholfen wird. Ich danke schonmal im Voraus!!!

all your base are belong to us