Datei ab einer bestimmten Zeile in einlesen
azok
- php
hi!
Ich stehe im Moment vor einem (kleineren) Problem in PHP - ich bin gerade dabei mein Templatesystem (der Begriff CMS wäre zu übertrieben) zu "aktualisieren". Zur Zeit läuft das ganze so, dass alle Inhalte in .txt Dateien abgespeichert sind, welche über ein PHP-Script der html-Datei kurz vor der Ausgabe quasi "eingepflanzt" werden. - Eine .txt Datei ist nun so aufgebaut:
1.|Titel
2.|Links
3.|Seiteninhalt
Dabei stellt jede Zeile ein eigenes Element in einem Array dar. Das Script arbeitet soweit eigentlich ganz gut, das einzige "Problem" dass es gibt ist jenes, dass alles an Content in eine Zeile gepfercht werden muss, damit diese später korrekt in das Array eingelesen werden kann. Bei Zeile 1 (Titel) und 2 (Links) ist das ansich kein Problem, da diese ohnehin nie sehr lange werden (auch in absehbarer Zeit nicht) - nur zeile 3, der Seiteninhalt, bietet für mich das Problem, dass es relativ unübersichtlich ist alles in eine Zeile zu schreiben.
Meine Frage daher - Gibt es irgendeine Möglichkeit, eine Datei ab einer bestimmten Zeile bis zum Ende in eine Variable (oder Arrayelement) einzulesen? (Da ich bis dato noch nichts im Manual gefunden habe, habe ich mir gedacht, ich frage mal hier nach.)
Danke schon mal für eure Antworten!
lg
azok
Hi azok!
Ich verstehe nicht ganz, was du möchtest. Daher kann ich dir auch nicht helfen. :)
Aber mir sind schwerwiegende Fehler in deiner Signatur aufgefallen:
Mensch Bedenke das, dass das "Dass", das mit doppel-s geschrieben wird ein Bindewort ist!
^^ ??? ^ ^ ^
;-)
MfG H☼psel
hi!
Ich verstehe nicht ganz, was du möchtest. Daher kann ich dir auch nicht helfen. :)
Ich möchte einfach eine *.txt Datei ab einer bestimmten Zeile in ein Array-Element bzw. eine Variable einlesen.
Aber mir sind schwerwiegende Fehler in deiner Signatur aufgefallen:
...hoppla... nun gut, das(s)-Fehler in dem Sinn sind es ja keine ;)
Mensch Bedenke das, dass das "Dass", das mit doppel-s geschrieben wird ein Bindewort ist!
^^ ??? ^ ^ ^
--> Mensch bedenke _jenes_, dass _jenes_ "Dass", _welches_ mit Doppel-s geschrieben wird ein Bindewort ist!
*gg*
lg
azok
Hi azok!
--> Mensch bedenke _jenes_,
Fordert aber einen Doppelpunkt!
Oder eben: Mensch, bedenke, ...
dass _jenes_ "Dass", _welches_ mit Doppel-s geschrieben wird ein Bindewort ist!
Der Rest war mir schon klar. Wenn du jetzt noch ein Komma an die richtige Stelle setzt, bin ich zufrieden. :)
MfG H☼psel
Hallo,
--> Mensch bedenke _jenes_, dass _jenes_ "Dass", _welches_ mit Doppel-s geschrieben wird ein Bindewort ist!
Nein!
--> Mensch bedenke _jenes_, dass _jenes_ "Dass", _welches_ mit Doppel-s geschrieben wird, ein Bindewort ist!
^
!
Viele Grüße
echo $begrüßung;
Gibt es irgendeine Möglichkeit, eine Datei ab einer bestimmten Zeile bis zum Ende in eine Variable (oder Arrayelement) einzulesen?
Nein, wenn Zeilen jeweils eine unterschiedliche Länge haben, ist die Position der Zeilenendezeichen nicht berechenbar. Damit kann der Lesezeiger auch nicht auf eine bestimmte Position gestellt werden, um von dort ab zu lesen.
echo "$verabschiedung $name";
Hello,
Nein, wenn Zeilen jeweils eine unterschiedliche Länge haben, ist die Position der Zeilenendezeichen nicht berechenbar. Damit kann der Lesezeiger auch nicht auf eine bestimmte Position gestellt werden, um von dort ab zu lesen.
Kann er doch ;-P
Aber eben nicht direkt.
Er muss erst alles "durchspulen".
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello azok,
Meine Frage daher - Gibt es irgendeine Möglichkeit, eine Datei ab einer bestimmten Zeile bis zum Ende in eine Variable (oder Arrayelement) einzulesen? (Da ich bis dato noch nichts im Manual gefunden habe, habe ich mir gedacht, ich frage mal hier nach.)
Es gibt in PHP generell die Möglichkeit, "Arrays" abzuspeichern.
Schau Dir mal die Funktionen serialize() und unserialize() an
http://de2.php.net/manual/de/function.serialize.php
Und sonst könntest Du auch eine "echte" CSV-Datei aufbauen.
Das hätte den Vorteil, dass die Elemente auch das Trennzeichen und/oder Zeilenumbrüche enthalten dürfen. Allerdings kann man eine solche Datei dann nur noch mit fgetcsv()
http://de2.php.net/manual/de/function.fgetcsv.php
auslesen.
Bis zu einer bestimmten Zeile vorzuspulen, geht mit einer Schleife:
Beispiel
$zeile = 12;
$count = 0;
$return = false;
while (!feof($fh) and ($inhalt = fgets($fh,$maxrowlen))!== false)
{
$count++;
if($count == $zeile)
{
$return = $inhalt;
break;
}
}
Wenn $return dann !== false ist, enthält es die gewünschte Zeile.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo,
$content=array()
$dat=fopen('content.txt','r');
$content['title']=fgets($dat);
$content['links']=fgets($dat);
$content['content']='';
while(!feof($dat))
$content['content'].=fgets($dat);
fclose($dat);
wenn Conten immer an letzter Stelle ist, wird Dir dieses Script weiterhelfen.
Gruß aus Berlin!
eddi
Hallo azok.
Meine Frage daher - Gibt es irgendeine Möglichkeit, eine Datei ab einer bestimmten Zeile bis zum Ende in eine Variable (oder Arrayelement) einzulesen?
Mir fällt hierzu nur ein, die Datei per file() einzulesen und mit array_slice() die gewünschten Zeilen zu erhalten.
Einen schönen Freitag noch.
Gruß, Ashura
hi!
Argl... jetzt ist mir gerade aufgefallen, in wie weit es "Verständigungsprobleme" gegeben haben könnte.
Ich habe geschrieben: "...ab einer bestimmten Zeile bis zum Ende einlesen"
Folglich meinte ich nicht das Zeilenende, sondern einfach das Ende der Datei. Ich möchte nämlich immer ab der Zeile 3 die kompletten folgenden Zeilen (bis zum Ende dieser am Ende der Datei) in eine Variable oder eben ein Arrayelement schreiben.
lg
azok
Hello,
Folglich meinte ich nicht das Zeilenende, sondern einfach das Ende der Datei. Ich möchte nämlich immer ab der Zeile 3 die kompletten folgenden Zeilen (bis zum Ende dieser am Ende der Datei) in eine Variable oder eben ein Arrayelement schreiben.
Und was hält DIch davon ab, meinen Vorschlag anzupassen?
Wo kneift es denn noch?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo,
Ich möchte nämlich immer ab der Zeile 3 die kompletten folgenden Zeilen (bis zum Ende dieser am Ende der Datei) in eine Variable oder eben ein Arrayelement schreiben.
tjo, dann hatte ich es ja doch richtig verstanden - auch wenn mir da irgend ein Heini ein "nicht hilfreich" reingewürgt hat...
Gruß aus Berlin!
eddi