Lektion 15: Aus einer Text-Datei lesen

In der vorigen Lektion haben wir gelernt, wie man mit PHP auf das Dateisystem des Servers zugreifen kann. In dieser Lektion werden wir dieses Wissen anwenden und aus einer normalen Textdatei lesen.

Textdateien können extrem nützlich für das Speichern verschiedner Arten von Informationen sein. Sie sind nicht ganz so flexibel wie wirkliche Datenbanken, aber Textdateien brauchen meist nicht so viel Speicher. Außerdem sind Textdateien ein schlichtes einfaches Format, das auf fast allen Systemen funktioniert.

Öffnen der Textdatei

Wir benutzen die Dokumentationfopen-Function, um die Textdatei zu öffnen. Die Syntax ist die folgende:


	fopen(Dateiname, Modus)
	
	
Dateiname
Name der Datei, die geöffnet werden soll.
Modus
Der Modus kann auf die folgenden Werte gesetzt werden: "r" (reading = lesen), "w" (writing = schreiben) oder "a" (appending = anfügen). In dieser Lektion werden wir uns nur mit dem Lesen beschäftigen. Aus diesem Grund benutzen wir "r". In der kommenden Lektion werden Sie dann lernen, wie man in eine Datei schreibt bzw. etwas anfügt.

Die Beispiele in dieser Lektion nutzen die Textdatei unitednations.txt. Dies ist eine einfache Liste der Programme und Fonds der Vereinten Nationen und die Domainnamen der jeweiligen Webseite. Sie können sich diese Datei herunterladen oder Sie erstellen eine eigene Datei und testen die Beispiele daran.

Lassen Sie uns zuerst die Datei unitednations.txt öffnen:


	<?php

	// Öffnet die Textdatei
	$f = fopen("unitednations.txt", "r");

	// Schließt die Textdatei
	fclose($f);

	?>

	
	

Beispiel 1: Eine Zeile aus einer Textdatei lesen

Mit der Function Dokumentationfgets können wir eine Zeile aus einer Textdatei auslesen. Diese Methode liest bis zum ersten Zeilenumbruch (aber schließt diesen nicht ein).


	<html>

	<head>
	<title>Aus einer Textdatei lesen</title>
	</head>
	<body>

	<?php

	$f = fopen("unitednations.txt", "r");

	// Liest eine Zeile aus der Textdatei und gibt deren Inhalt aus
	echo fgets($f); 

	fclose($f);

	?>

	</body>
	</html>
	
	

Beispiel 2: Alle Zeilen aus einer Textdatei auslesen


	<html>

	<head>
	<title>Aus einer Textdatei lesen</title>
	</head>
	<body>

	<?php

	$f = fopen("unitednations.txt", "r");

	// Liest Zeile für Zeile bis zum Ende der Datei
	while(!feof($f)) { 
	    echo fgets($f) . "<br />";
	}

	fclose($f);

	?>

	</body>
	</html>
	
	

In diesem Beispiel gehen wir mittels einer Schleife durch alle Zeilen und benutzen dabei die Function Dokumentationfeof (for end-of-file), um zu überprüfen, ob das Dateiende erreicht ist. Wenn dies nicht der Fall ist ("!" - siehe Lektion 6), wird die Zeile geschrieben.

Anstatt mit einer Schleife durch alle Zeilen zu gehen, hätten wir das gleiche Resultat mit der Function Dokumentationfread erreichen können. Wenn Sie mit sehr großen Textdateien (Tausende von Zeilen) arbeiten, seien Sie sich bitte bewusst, dass die Dokumentationfread-Function mehr Ressourcen benutzt als die Dokumentationfgets-Function. Für kleinere Dateien macht es fast keinen Unterschied.

Beispiel 3: Ein einfaches Linkverzeichnis

Wie bereits zu Beginn der Lektion erwähnt, können Textdateien sehr gut für Datenspeicherung genutzt werden. Dies zeigen wir im nachfolgenden Beispiel, in dem wir ein einfaches Linkverzeichnis aus dem Inhalt unserer Textdatei unitednations.txt erstellen.

Die Datei ist systematisch aufgeschrieben. Erst der Name des UN-Programmes, dann ein Komma und dann der Domainname. Wie Sie sich vielleicht vorstellen können, können noch weitere Informationen in dieser mit Kommas getrennten Liste in der Datei gespeichert werden.

Um die Informationen aus jeder Zeile zu bekommen können wir die Funktionalitäten der Arrays nutzen. Siehe Lektion 8 für weitere Informationen über Arrays.


	<html>
	<head>
	<title>Aus einer Textdatei lesen</title>

	</head>
	<body>

	<?php
	$f = fopen("unitednations.txt", "r");

	// Liest Zeile für Zeile bis zum Ende der Datei
	while (!feof($f)) { 

	// Erstellt einen Array, benutzt das Komma als Trennzeichen
	   $arrM = explode(",",fgets($f)); 

	// Schreibt Links (benutze die Daten aus dem Array)
	   echo "<li><a href='http://" . $arrM[1] . "'>" . $arrM[0]. "</a></li>"; 

	}

	fclose($f);
	?>

	</body>
	</html>
	
	

Ziemlich praktisch, stimmt's? Im Prinzip könnten Sie die Datei mit Hunderten von Links erweitern oder zu Ihrem Verzeichnis noch Adressinformationen hinzufügen.

In der folgenden Lektion schauen wir uns an, wie man in eine Textdatei schreibt.



<< Lektion 14: Filesystem-Funktionen (Dateisystem)

Lektion 16: In eine Text-Datei schreiben >>