Home
Navigation
Impressum
SEO Welten - Webcoding, Editoren, Scripte und Anwendungen
SEO Welten
Buchempfehlungen
 

PHP / Inhalte von Dateien mit Schleifen einlesen und ausgeben

Inhalte mit For-, Foreach- und While-Schleifen einlesen

Übersicht / Seite:

  1. Dateien mit PHP einbinden (Dateien includen oder requirieren)
  2. Weitere Möglichkeiten mit PHP (Dateien mit Schleifen einlesen)
  3. Dateien mit HTML einbinden (mit iFrame oder Object)
  4. Textdateien mit JavaScript einfügen (Beispiele und Lösungsansätze)
  5. Content mit Ajax verarbeiten (kleine Einführung)

Weitere Möglichkeiten mit PHP

Es macht zwar kaum Sinn Dateien mit Schleifen lediglich "einzubinden" und auszugeben, weil für diesen Zweck die PHP-Funktionen include(), require() oder readfile() wesentlich besser geeignet und leichter zu handhaben sind, dennoch ist es problemlos möglich. Aus diesem Grund möchten wir zur Vervollständigung des Themas auf dieser Seite drei einfache Beispiele aufführen, wie Sie mit Hilfe eine While-, einer Foreach- und einer For-Schleife die kleine datei.txt von der ersten Seite mit PHP in eine dynamische Seite "einbinden" können. Einbinden in Anführungszeichen, weil eigentlich keine Datei eingebunden, sondern eher deren Content mit Hilfe weiterer Funktionen eingelesen wird.

Es sei angemerkt, der Einsatz von Schleifen ist erst dann unverzichtbar, wenn der Inhalt von Seiten vor der Ausgabe weiter verarbeitet werden soll, zum Beispiel um den Content von Dokumenten mit Hilfe regulärer Ausdrücke zu durchsuchen, Werte zu zählen oder mit Hilfe von if-Anweisungen eine Auswahl zu Treffen. Einige kleine Beispiele finden Sie ebenfalls auf dieser Seite.


While-Schleife

Im ersten Beispiel wird zuerst mit der Funktion fopen die datei.txt im Lesemodus "r" geöffnet. Im nächsten Schritt wird mit Hilfe der Dateifunktion feof geprüft, ob der Dateizeiger nicht am Ende der Datei steht. Da feof im Normalfall true zurückgibt, wenn der Dateizeiger am Ende der Datei steht, muss vor feof ein ! Ausrufezeichen zur Verneinung gesetzt werden. Die While-Schleife wird im Beispiel solange ausgeführt, bis der Dateizeiger bei der letzten Zeile der datei.txt angekommen ist. Bei jedem Durchlauf liest die Funktion fgets eine Zeile ein. Die Zahl der zu lesenden Zeichen innerhalb einer Zeile lässt sich durch die Angabe eines Wertes begrenzen. Abschließend wird mit fclose die mit fopen geöffnete Datei bzw. der geöffnete Dateizeiger wieder geschlossen.

Erstes Beispiel, While-Schleife:

<?php

$lesen = fopen ("datei.txt", "r");

while (!feof($lesen)) {$ausgabe = fgets($lesen, 1024);
    
	   echo $ausgabe;
		
}fclose ($lesen);

?>

Wie bereits angemerkt, so macht es erst dann Sinn eine Schleife einzusetzen, wenn mit dem Einsatz eine Aufgabe verbunden ist, die über das bloße Einbinden einer Datei hinaus geht. Im zweiten Beispiel wird mit Hilfe der Funktion preg_replace() nach runden, geschweiften und eckigen Klammern im Text gesucht, um diese zu entfernen. Im Gegensatz zur Funktion str_replace(), welche einen String nach einem Teilstring durchsucht, benötigt die Funktion preg_replace() für die Suche einen regulären Ausdruck. Innerhalb einer mit eckigen Klammern eingefassten Zeichenklasse muss eine schließende eckige Klammer mit einem Backslash maskiert werden, wenn diese als zu suchendes Zeichen von PHP interpretiert werden soll. Nach der Filterung wird der Inhalt der datei.txt als Liste ausgegeben.

Zweites Beispiel, While-Schleife:

<?php

$lesen = fopen ("datei.txt", "r");

echo "<ul>\n";

while (!feof($lesen)) {$ausgabe = fgets($lesen, 1024);

$ausgabe = preg_replace("/[()[\]{}]/", "", $ausgabe);
    
	   echo "\t<li>".trim($ausgabe)."</li>\n";
		
}fclose ($lesen);

echo "</ul>\n";

?>

 
Foreach-Schleife

Im dritten bis fünften Beispiel wird die datei.txt mit Hilfe der Funktion file() in einem Array geladen, wobei jeder Wert im Array einer Zeile in der Datei entspricht. Die Werte des Arrays lassen sich nun leicht mit einer Foreach-Schleife einlesen, weiterverarbeiten oder unverändert ausgeben.

Drittes  Beispiel, Foreach-Schleife:

<?php

$lesen = file ("datei.txt");

foreach ($lesen as $ausgabe) {echo $ausgabe;}

?>

Nachfolgend ein kleines Beispiel, wie der Einsatz einer Foreach-Schleife mit einer Aufgabe verbunden werden kann. Der Inhalt der datei.txt wird in diesem Beispiel Zeile für Zeile als Liste ausgegeben. Um den Quelltext übersichtlicher zu gestalten, werden mit rtrim() vorhandene Zeilenumbrüche vom Ende jeder Zeile entfernt und mit \n neue Zeichenumbrüche für eine aufgeräumte Ansicht des Quelltextes eingefügt. /t dient hingegen der Einrückung in der Quelltextansicht.

Viertes Beispiel, Foreach-Schleife, Ausgabe als Liste:

<?php

$lesen = file ("datei.txt"); 

echo "<ul>\n";

foreach ($lesen as $ausgabe) {echo "\t<li>".rtrim($ausgabe)."</li>\n";}

echo "</ul>\n";

?>

 
For-Schleife

Wie bereits im dritten und vierten Beispiel, so wird auch in diesem Beispiel zuerst die datei.txt mit file() in einen Array geladen. Jede Zeile der Datei entspricht dabei einem Wert in Array. Einziger Unterschied zum vorausgehenden Beispiel, dieses Mal werden die Werte mit einer For-Schleife aus dem Array eingelesen und ausgegeben.
Bei einer For-Schleife handelt es sich eigentlich um eine reine Zählschleife, bei die Angabe eines Startwertes und eines Endwertes erforderlich ist. Da die datei.txt 8 Zeilen hat, diese 8 Zeilen im Array nicht die Werte 1 bis 8 sondern 0 bis 7 belegen, kann die kleine Testdatei mit dem Startwert von 0 und dem Endwert von 7 ausgegeben werden. Bei jedem Durchlauf wird der jeweilige Wert durch das doppelte Pluszeichen hinter $zeile++ um einen Wert erhöht. Der Einsatz einer For-Schleife ergibt dann einen Sinn, wenn zum Beispiel Werte gezählt werden sollen oder pro Seite nur die Ausgabe einer bestimmten Anzahl von Ergebnissen und Treffern erwünscht ist.

Fünftes Beispiel, For-Schleife:

<?php

$lesen = file ("datei.txt");

for ($zeile = 0; $zeile <= 7; $zeile++){echo $lesen[$zeile];

} 

?>

Neben der While-, For- und Foreach-Schleife gibt es noch die Do-While-Schleife, die mit der While-Schleife eng verwandt ist, so dass eine nähere Betrachtung und Vorstellung dieser Schleife hier entfallen kann.


htmlspecialchars() und htmlentities()

Wo immer möglich, sollte aus Sicherheitsgründen bei der Ausgabe die Funktion htmlspecialchars() oder die Funktion htmlentities() eingesetzt werden. Beide Funktionen wandeln HTML-Code so um, dass dieser Code lesbar ausgeben werden kann. Zum Beispiel wird aus einer sich öffnenden spitzen Klammer die Zeichenfolge &lt; im Quelltext und dadurch zu einer sichtbaren öffnenden Klammer < in einen beschreibenden Text. Die Funktion htmlentities() wandelt alle Zeichen um, für die es einen HTML-Ersatz gibt, die Funktion htmlspecialchars() nur spitze Klammern, das & und Anführungszeichen. Beide Funktionen können durch die Angabe eines zusätzlichen Argumentes noch zusätzlich beeinflusst werden. Zum Beispiel bewirkt das Argument ENT_QUOTES, dass einfache und doppelte Anführungszeichen in ihre HTML-Entsprechungen umgewandelt werden. Ohne dieses zusätzliche Argument würden nur doppelte Anführungszeichen umgewandelt, einfachen Anführungszeichen hingegen nicht.

Die Frage, wann und wo die Funktionen htmlspecialchars() oder htmlentities() eingesetzt werden sollten, lässt sich nicht pauschal beantworten, da gegebenenfalls auch erwünschte HTML-Tags (wie zum Beispiel erwünschte Links oder Zeilenumbrüche) bei der Ausgabe unbrauchbar würden. Dort, wo mit Benutzereingaben und deren Ausgabe zu rechnen ist, sollte jedoch aus Sicherheitsgründen eine der beiden Funktionen auf jeden Fall zur Anwendung kommen. Mehr zu diesem Thema auch unter double_encode.

Kleines Beispiel:

<?php echo htmlentities($ausgabe, ENT_QUOTES); ?>

 
Weitere Beispiele zum Thema Einbinden von Dateien und Content mittels HTML, JavaScript und Ajax auf der nächsten Seiten.

weiterlesen: 1 « / » 3, 4, 5

 
Navigation

Finden und
gefunden werden ...


- Optimierung -

 

Webcoding

Übersicht


Web Services


Tutorials &
diverse Listings

und vieles mehr...

 

Weitere Themen

Übersicht


Copyright © 2006 - Verlag Horst Müller - Stendal | Datenschutz | Nutzungsbedingungen