SEO Welten
Buchempfehlungen
|
PHP / Inhalte von Dateien mit Schleifen einlesen und ausgebenInhalte mit For-, Foreach- und While-Schleifen einlesenÜbersicht / Seite:
Weitere Möglichkeiten mit PHPEs 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. 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"; ?> 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"; ?> 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. 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 < 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. Kleines Beispiel: <?php echo htmlentities($ausgabe, ENT_QUOTES); ?> |
Navigation
Finden und - Optimierung -
Webcoding
Übersicht Web Services Tutorials &
und vieles mehr...
Weitere Themen
Übersicht |