PHP 4.3

10.1 Anlegen einer Testdatei

In unseren Übungen erstellen wir eine Reihe einfacher Textdateien. Um Ihnen die Funktionsweise der PHP-Funktionen zum Lesen und Schreiben von Daten verständlicher zu machen, wollen wir zuerst den Aufbau einer Textdatei erläutern.

Textdateien bestehen nicht nur aus den für uns sichtbaren ASCII-Zeichen. Ebenso sind Zeichen enthalten, die in einem normalen Editor nicht sichtbar sind. Wenn Sie im Editor einen Text schreiben und die Return-Taste betätigen, wird das Zeilenende-Zeichen (im Englischen auch als newline bezeichnet) eingefügt. Betriebssysteme merken sich die Länge einer Datei in Bytes. Sowie beim Lesen einer Datei keine weiteren Bytes mehr vorhanden sind, meldet das Betriebssystem EOF (engl. EOF; End of file). Das Ganze wird dadurch nicht einfacher, dass Windows-Betriebssysteme sogar zwei Zeichen für ein Zeilenende schreiben, UNIX-Betriebssysteme hingegen nur ein Zeichen.
Folgende Grafik verdeutlicht den Aufbau einer Textdatei, die im UNIX-Format (das heißt auf einem UNIX-System oder mit einem Editor, der auf diese Art und Weise Dateien speichern kann) angelegt wurde.

Um in einem PHP-Programm Zeilenumbrüche in Textdateien zu erzeugen, können Sie nicht das aus HTML bekannte "<br>"-Tag einsetzen. Stattdessen können Sie in Zeichenkettenkonstanten in PHP das Konstrukt \n (n wie newline) verwenden, das hier für ein Zeilenende steht.
In HTML spielen Zeilenenden im Allgemeinen keine Rolle. Deswegen führen wir das Konstrukt \n erst jetzt im Zusammenhang mit dem Schreiben von Dateien ein — bei normalen HTML-Ausgaben mit echo würden Sie die Zeilenenden gar nicht bemerken. Die Wirkung läßt sich jedoch auch in HTML mithilfe eines vorformatierten HTML-Blocks (<pre> ... Text ... </pre>) demonstrieren:

Newlines mit \n
  <html>
  <body>
  <pre>
     <?php
       echo"Das\nist\nein\nvorformatierter\nText!";
     ?>
   </pre>
   </body>
   </html>
Browserausgabe
  Das
  ist
  ein
  vorformatierter
  Text!

Um die Beispiele zum Lesen und Schreiben von Daten besser nachvollziehen zu können, legen Sie am besten mit Ihrem Texteditor eine Datei mit einem einfachen Namen, wie zum Beispiel test.txt, an.
Grundsätzlich reicht der Windows-Editor Notepad dafür aus, besser geeignet ist jedoch ein Programm, welches die Speicherung im UNIX-Format ermöglicht.
Die Mehrzahl der Webserver laufen auf einem UNIX- bzw. UNIX-verwandten Betriebssystem. Einige PHP-Funktionen zum Dateisystem würden bei Windows-formatierten Dateien andere Ergebnisse zurückliefern, da Windows zwei Zeichen zur Darstellung eines Zeilenumbruchs verwendet. Teilweise hat der Webserver Apache auf einem UNIX-Betriebssystem sogar einige Probleme bei HTML-Dokumenten mit Windows-Zeilenenden. Andersherum haben Windows-Betriebssysteme und darauf laufende Webserver im Allgemeinen keine Probleme mit Dateien im UNIX-Format. Dieses stellt, was die Bearbeitung von Dateien mit PHP, aber auch statische HTML-Dokumente angeht, also einen gemeinsamen Nenner dar, dessen Verwendung in der Praxis Probleme vermeiden kann.
Es gibt eine Reihe von Programmen unter Windows, mit denen Dateien im UNIX-Format gespeichert werden können (z. B. HomesiteTM von Allaire als kommerzielles Produkt oder HTML-Kit von Chami (http://www.chami.com/html-kit/) als Freeware-Programm).

Übernehmen Sie folgende Daten:
  Ein Haus
  Ein Fenster
  Eine Tür
  Ein Tisch
  Ein Stuhl
  Eine Couch    

Achten Sie beim manuellen Schreiben der Datei darauf, keine unnötigen Leerzeilen oder -zeichen hinter dem letzten Eintrag ("Eine Couch") zu lassen. Auch Leerzeilen werden von PHP-Funktionen ausgelesen. Bei unseren Beispielen stellt dies zwar kein echtes Problem dar, da wir nur eine Ausgabe der Zeilen erreichen möchten. Es kann jedoch gerade für Einsteiger verwirrend sein, wenn Daten weiterverarbeitet sollen und Fehler auftreten. Da sich aber Leerzeilen auch in der Praxis nicht immer hundertprozentig unterbinden lassen, werden wir unsere Routinen zum Auslesen von Dateien so gestalten, dass Leerzeilen keinen Einfluss auf den korrekten Programmablauf nehmen.

Kommentare (0)

Ihr Kommentar

Name