Datei blockweise auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datei blockweise auslesen

    Was ich machen möchte, ist eine Datei so auszulesen, dass die einzlenen Elemente, die in der Datei stehen (getrennt durch <!--TRENNER--> )in ein Array eingelesen werden.
    Kann man untenstehendes auch eleganter bzw. kürzer lösen? Mir geht es vor Allem um 2 Dinge:

    1. Gibt es auch die Möglichkeit, Blöcke in der Textdatei zu bilden (also z.B. ausgewiesen durch <!--Start Block1--> und <!--Ende Block1-->), so dass ich die einzelnen Elemente nicht nur unterteile, sondern sie auch gleich logisch bestimmten Blöcken zuordnen kann.?

    2. Gibt es die Möglichkeit, folgenden Abschnitt einfacher zu schreiben?
    PHP-Code:
    $header $tpl[0]; 
    $content $tpl[1]; 
    $teaser $tpl[2]; 
    $footer $tpl[3]; 
    Also so, dass ich nicht jedes mal schreiben muss:
    PHP-Code:
    $variable $tpl[zahl]; 
    ??

    Hier der komplette Code:
    PHP-Code:
    function readfromfile($filename

    return (
    file_exists($filename)?implode(''file($filename)):0); 


    $datei readfromfile(test.txt); 

    $tpl explode("<!--TRENNER-->",$datei); 

    $header $tpl[0]; 
    $content $tpl[1]; 
    $teaser $tpl[2]; 
    $footer $tpl[3]; 
    Zur Veranschaulichung noch der Inhalt einer Beispieldatei wie sie momentan aussieht und wie sie aussehen soll.
    So sieht sie aus:
    PHP-Code:
    <!--Trenner-->
    <
    html>
    <
    head>
    $title
    </head>
    <!--
    Trenner-->
    <
    body>
    ...
    </
    body>
    <!--
    Trenner-->
    ... 
    Und so sollte sie aussehen:
    PHP-Code:
    <!--Start Header-->
    <
    html>
    <
    head>
    $title
    </head>
    <!--
    Ende Header-->
    <!--
    Start Body-->
    ...
    <!--
    Ende Body-->
    ... 
    Ich hoffe, ich hab mich einigermassen verständlich ausgedrückt?!

    Vielen Dank für Eure Hilfe!

  • #2
    bischn viel Text, aber hier ist die Lösung:

    0. $tpl = explode('<!--Trenner-->', implode('', file($dateiname)));

    2. list ($header, $content, $teaser, $footer) = $tpl;

    1. wird komplizierter ...
    PHP-Code:
    $text implode(''file($dateiname));
    preg_match_all('/<!--Start ([a-z0-9A-Z_]+)-->(.*?)<!--Ende \1-->/',
      
    $text$matches);
    $tpl = array();
    for (
    $k=0$k<count($matches[0]); $k++)
      
    $tpl[$matches[1][$k]] = $matches[2][$k]; 
    erzeugt am Beispiel $text='<!--Start Block1--> und <!--Ende Block1-->';
    dies Array $tpl = array ('Block1' => ' und ');

    WICHTIG: Tragen mehrere Blöcke den gleichen Namen, wird nur der jeweils letzte aus der Datei gelesen.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      WOW... Vielen Dank! Klappt wunderbar

      Kommentar

      Lädt...
      X