azok: Datei ab einer bestimmten Zeile in einlesen

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

--
Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
Mensch Bedenke das, dass das "Dass", das mit doppel-s geschrieben wird ein Bindewort ist!
Mein Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:) de:> js:| ch:? mo:) zu:)
  1. 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

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. 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

      --
      Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
      Mensch bedenke das, dass das "Dass", das mit Doppel-s geschrieben wird ein Bindewort ist!
      Mein Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:) de:> js:| ch:? mo:) zu:)
      1. 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

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      2. 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

        --

        Mit zunehmendem Fortschritt der Zeit ist mit proportional ansteigendem Lebensalter zu rechnen.
  2. 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";

    1. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

  3. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  4. 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

  5. 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

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
  6. 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

    --
    Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
    Mensch bedenk' das, dass das "Dass", das mit Doppel-s geschrieben wird, ein Bindewort ist!
    Mein Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:) de:> js:| ch:? mo:) zu:)
    1. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

    2. 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