mirror of
https://gitlab.com/harald.mueller/aktuelle.kurse.git
synced 2024-10-19 09:55:03 +02:00
391 lines
16 KiB
HTML
391 lines
16 KiB
HTML
|
<html>
|
||
|
<head>
|
||
|
|
||
|
<title>PHP-Einfach.de - PHP Einführung - Dateien komplett ausgeben</title>
|
||
|
<meta name="Author" content="Andavos">
|
||
|
<meta name="Publisher" content="Andavos">
|
||
|
<meta name="Copyright" content="Andavos">
|
||
|
<link rel="stylesheet" href="css/main.css" tppabs="http://www.php-einfach.de/offline/css/main.css" type="text/css">
|
||
|
</head>
|
||
|
<body text="#000000" bgcolor="#DDDDDD" link="#004A95" alink="#004A95" vlink="#525252">
|
||
|
|
||
|
<table align="center" height="100%" width="100%" cellspacing="0" border="0" cellpadding="0">
|
||
|
<tr>
|
||
|
<td align="center" valign="middle" height="100%" width="100%">
|
||
|
|
||
|
<table height="100" width="750" cellspacing="0" border="0" cellpadding="0">
|
||
|
<tr>
|
||
|
<td height="100" bgcolor="#FFE09F" width="750"><img src="grafiken/banner_top.jpg" tppabs="http://www.php-einfach.de/offline/grafiken/banner_top.jpg" width="750" height="100" border="0" alt="">
|
||
|
<a name="oben"></a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<table height="650" width="750" cellspacing="0" border="0" cellpadding="0">
|
||
|
<tr>
|
||
|
<td valign="top" bgcolor="#FFE09F" width="160">
|
||
|
|
||
|
<table width="160" cellspacing="0" border="0" cellpadding="0">
|
||
|
<tr>
|
||
|
<td height="100" width="5"></td>
|
||
|
<td class="black" height="100" width="150">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<br><b><center><img src="grafiken/side_navigation.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_navigation.gif" width="150" height="25" border="0" alt=""></center></b>
|
||
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/index.php"><b>»</b> Startseite</a><br>
|
||
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_news.php"><b>»</b> Newsübersicht</a><br>
|
||
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_email.php"><b>»</b> Kontakt</a><br>
|
||
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_impressum.php"><b>»</b> Impressum</a><br><br>
|
||
|
|
||
|
|
||
|
<center><img src="grafiken/side_community.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_community.gif" width="150" height="25" border="0" alt=""></center>
|
||
|
<a target="_blank" class="blue" target="_blank" href="http://forum.php-einfach.de/"><b>»</b> Forum</a><br>
|
||
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_gaestebuch.php"><b>»</b> Gästebuch</a><br><br>
|
||
|
|
||
|
|
||
|
<center><img src="grafiken/side_tutorials.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_tutorials.gif" width="150" height="25" border="0" alt=""></center>
|
||
|
<a class="blue" href="einf_php.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php.php"><b>»</b> Einführung PHP</a><br>
|
||
|
|
||
|
|
||
|
<a class="blue" href="einf_php_anfang.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_anfang.php"><b>»</b> Anfang</a><br>
|
||
|
<a class="blue" href="einf_php_erste_schritte.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_erste_schritte.php"><b>»</b> Erste Schritte</a><br>
|
||
|
<a class="blue" href="einf_php_variablen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_variablen.php"><b>»</b> Variablen</a><br>
|
||
|
<a class="blue" href="einf_php_if-anweisung.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_if-anweisung.php"><b>»</b> if-Anweisung</a><br>
|
||
|
<a class="blue" href="einf_php_logische_operatoren.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_logische_operatoren.php"><b>»</b> Log. Operatoren</a><br>
|
||
|
<a class="blue" href="einf_php_uebung1.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_uebung1.php"><b>»</b> Übung</a><br>
|
||
|
<a class="blue" href="einf_php_dateien.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_dateien.php"><b>»</b> Dateien</a><br>
|
||
|
<a class="blue" href="einf_php_schleifen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_schleifen.php"><b>»</b> Schleifen</a><br>
|
||
|
<a class="blue" href="einf_php_array.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_array.php"><b>»</b> Array</a><br>
|
||
|
<a class="blue" href="einf_php_dateien2.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_dateien2.php"><b>»</b> Dateien Teil 2</a><br>
|
||
|
<a class="blue" href="einf_php_datum.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_datum.php"><b>»</b> Datum & Zeit</a><br>
|
||
|
<a class="blue" href="einf_php_email.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_email.php"><b>»</b> Mail Funktion</a><br>
|
||
|
<div style="position: relative; left:15;" >
|
||
|
<a class="blue"href="einf_php_suchen_ersetzen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_suchen_ersetzen.php"><b>»</b> Suchen & Ersetzen</a><br>
|
||
|
<a class="blue" href="einf_php_nuetz_funktionen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_nuetz_funktionen.php"><b>»</b> Nützliche Funktionen</a><br>
|
||
|
</div>
|
||
|
<a class="blue" href="einf_php_sessions.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_sessions.php"><b>»</b> Sessions</a><br><br>
|
||
|
|
||
|
|
||
|
|
||
|
<a class="blue" href="einf_mysql.php.htm" tppabs="http://www.php-einfach.de/offline/einf_mysql.php"><b>»</b> Einführung MySQL</a><br>
|
||
|
|
||
|
<br>
|
||
|
<center>
|
||
|
<a target="_blank" href="http://www.php-einfach.de/nav_verlinkung.php"><img src="grafiken/php-einfach.gif" tppabs="http://www.php-einfach.de/offline/grafiken/php-einfach.gif" width="88" height="31" border="0" alt="PHP-Einfach.de"></a><br><br>
|
||
|
|
||
|
<a target="_blank" href="http://www.digicount.de/"><b>Counterdienst:</b></a>
|
||
|
<a target="_blank" href="http://www.php-einfach.de/nav_digicount.php"><div>
|
||
|
<img src="grafiken/digicount_livedemo.jpg" tppabs="http://www.php-einfach.de/offline/grafiken/digicount_livedemo.jpg" border="0" alt="Digicount.de"><br>
|
||
|
<small>Unser werbefreier Counter- und Statistikdienst</small></div>
|
||
|
|
||
|
</a>
|
||
|
</center>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</td>
|
||
|
<td height="100" width="5"></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
</td>
|
||
|
<td valign="top" bgcolor="#FFFFFF" width="430">
|
||
|
|
||
|
<table width="430" cellspacing="0" border="0" cellpadding="0">
|
||
|
<tr>
|
||
|
<td height="100" width="10"></td>
|
||
|
<td valign="top" class="black" height="100" width="410">
|
||
|
<br>
|
||
|
<h4>Dateien Teil 2: Komplett ausgeben</h4>
|
||
|
|
||
|
Jetzt lernen wir, wie wir Dateien komplett ausgeben können.<br><br>
|
||
|
|
||
|
Dafür gibt es 2 Möglichkeiten, die erste Möglichkeit ist es, die Datei Zeilenweise in ein Array einzulesen. <br><br>
|
||
|
|
||
|
Die erste Möglichkeit ist zu überprüfen, ob der Dateizeiger am Ende der Datei ist. Sobald der Dateizeiger am Ende der Datei ist, hört der Script auf zu lesen.<br><br>
|
||
|
|
||
|
Dies geht so:
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
<?php
|
||
|
$userdatei = fopen("datei.txt","r");
|
||
|
while(!feof($userdatei))
|
||
|
{
|
||
|
$zeile = fgets($userdatei,1024);
|
||
|
echo $zeile;
|
||
|
}
|
||
|
fclose($userdatei);
|
||
|
?>
|
||
|
</pre>
|
||
|
</font>
|
||
|
|
||
|
Zuerst öffnen wir die Datei <b>datei.txt</b> mit dem Lesemodus <b>r</b>.<br><br>
|
||
|
|
||
|
Die <b>while-Schleife</b> läuft solange bis, der Dateizeiger am Ende der Datei steht. Dies überprüfen wir mit <b>!feof</b>.<br>
|
||
|
Danach lesen wir einfach die nächsten 1024 Zeichen aus der Datei aus und geben diese aus.<br>
|
||
|
Man kann natürlich auch einen anderen Wert benutzen, aber man sollte nicht so kleine Werte benutzen, denn wenn ihr dort z.B. 2 eingebt, und eure Datei 1000 Zeichen hat, so muss die Schleife 500 mal durchlaufen. Dies dauert natürlich viel länger, als wenn PHP auf einmal z.B. 1024 Zeichen liest.<br>
|
||
|
Ihr könnt auch größere Werte benutzen, z.B. 5000.<br>
|
||
|
<br>
|
||
|
|
||
|
Wenn der Dateizeiger am Ende angekommen ist, ist die <b>while-Schleife</b> beendet und die Datei wird wieder geschlossen.<br><br>
|
||
|
|
||
|
Die zweite Möglichkeit ist deutlich leichter, und zwar benutzt man dann den Befehl <b>file</b>:
|
||
|
|
||
|
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
<?php
|
||
|
$datei = file("datei.txt");
|
||
|
?>
|
||
|
</pre>
|
||
|
</font>
|
||
|
|
||
|
Danach können wir den Inhalt des Arrays wieder mit einer geeigneten Schleife ausgeben. Entweder mit einer <b>while-Schleife</b>, <b>for-Schleife</b> oder auch mit <b>foreach</b>.<br><br>
|
||
|
|
||
|
Wir können den Inhalt jetzt so wie ein Array behandeln, also nach Werten suchen (<b>in_array</b>), diese Werte sortieren oder auch Werte hinzufügen.<br><br>
|
||
|
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
<?php
|
||
|
$datei = file("datei.txt");
|
||
|
|
||
|
|
||
|
foreach($datei AS $meine_datei)
|
||
|
{
|
||
|
echo $meine_datei."<br>";
|
||
|
}
|
||
|
?>
|
||
|
</pre>
|
||
|
</font>
|
||
|
<br><br>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Ich würde die Funktion <b>file()</b> empfehlen. <br><br>
|
||
|
|
||
|
Wir haben auch die Möglichkeit per <b>implode()</b> ein Array anhand eines Trennzeichen zu einem String/Text zusammenzufügen: <br>
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
<?php
|
||
|
$datei = implode("",file("datei.txt"));
|
||
|
echo $datei;
|
||
|
?>
|
||
|
</pre>
|
||
|
</font>
|
||
|
Dabei wird als Trennzeichen "" (leer) benutzt. Man kann sich dieses aneinander hängen so vorstellen: Zuerst wird das erste Arrayelement ($array[0]) in der Variable gespeichert, dann folgt das Trennzeichen, danach kommt dann das zweite Arrayelement und dann wieder ein Trennzeichen und so weiter.<br><br>
|
||
|
|
||
|
Möchte man z.B. dass jede Zeile in der Datei auch eine neue Zeile im Browser ist, so wird als Trennzeichen ein <br> benutzt:<br>
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
<?php
|
||
|
$datei = implode("<br>",file("datei.txt"));
|
||
|
echo $datei;
|
||
|
?>
|
||
|
</pre>
|
||
|
</font>
|
||
|
|
||
|
<a name="explode"></a>
|
||
|
<h3>Explode</h3>
|
||
|
Die <b>explode</b> Funktion ist sehr wichtig, wenn man mit Dateien arbeitet.<br>
|
||
|
<b>explode</b> trennt einen Text an bestimmten Stellen (diese werden vom Programmierer bestimmt) und speichert die Textabschnitte in einem Array. So können wir das Array wieder speziell Abfragen.<br><br>
|
||
|
|
||
|
Diese Funktion bringt uns viele Vorteile, so können wir z.B. einen Login-Script basteln, das den Benutzername und das Passwort in einer externen Datei speichert.<br>
|
||
|
So können wir aber auch Texte viel leichter formatieren, z.B. die aus einem Gästebuch-Script.<br>
|
||
|
Möchte man später das Design des Gästebuches verändern, so muss man nicht den ganzen Inhalt der Datei verändern (in der die Einträge gespeichert sind), sondern man muss nur ein paar Zeilen im PHP-Code verändern.<br><br>
|
||
|
|
||
|
Die Funktion kann man sowohl bei Texten, als auch bei Inhalten von gelesenen Dateien benutzen.<br><br>
|
||
|
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
<?php
|
||
|
$zeile = "24.12.2006|Weihnachten|Frohes Fest";
|
||
|
$zerlegen = explode("|", $zeile);
|
||
|
|
||
|
echo "<b>$zerlegen[0]</b>, <i>$zerlegen[1]</i>
|
||
|
<u>$zerlegen[2]</u>";
|
||
|
?>
|
||
|
</pre>
|
||
|
</font>
|
||
|
|
||
|
Als Ausgabe erhalten wir folgendes Erhalten:<br>
|
||
|
<b>24.12.2006</b>, <i>Weihnachten</i> <u>Frohes Fest</u><br><br>
|
||
|
|
||
|
Wir schreiben unseren Text in die Variable <b>$zeile</b> und trennen dann die einzelnen Abschnitte mit | (Alt Gr + <).<br> <br>
|
||
|
|
||
|
Danach benutzen wir die Funktion <b>explode</b>, diese trennt unseren Text überall, wo ein | steht. Wir könnten auch andere Zeichen benutzen, aber man sollte <b>immer</b> Zeichen benutzen, die man normalerweise <b>nie</b> für einen Text benutzen. (Also kein . (Punkt) nehmen o.ä.).<br><br>
|
||
|
|
||
|
Danach geben wir mir <b>echo</b> den ersten Wert des Arrays aus (24.12.2006), danach den zweiten Wert (Weihnachten) und zum Schluss den dritten Wert (Frohes Fest).<br><br>
|
||
|
|
||
|
Wir Ihr wisst, fangen <a target="_blank" href="einf_php_array.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_array.php">Arrays</a> immer bei 0 an zu nummerieren. <br><br>
|
||
|
|
||
|
|
||
|
So können wir alle gespeicherten Werte unabhängig voneinander bearbeiten.<br>
|
||
|
Wenn wir dann mit <i>implode</i> das bearbeitete Array zusammenführen, können wir sehr leicht veränderte Textdateien abspeichern.<br><br>
|
||
|
|
||
|
Dieses Verfahren benutzt man besonders oft, wenn man mit Textdateien arbeitet.<br>
|
||
|
Denn würde man in die Textdatei nicht die reine Information, also <b>nur</b> die Eingaben des Benutzers speichern, sondern auch noch HTML Tags, so wäre das Neu design der Ausgabe extrem schwierig. Und wenn man z.B. die eingegebene Emailadresse vor der Ausgabe noch einmal überprüfen möchte, ist dies fast unmöglich.<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<b>Hier ein Beispiel:</b><br>
|
||
|
Wir erstellen einen kleinen Shoutbox, aber nur den Teil, wie wir den Text wieder ausgeben.<br><br>
|
||
|
|
||
|
Zuerst legen wir eine neue Datei an (<i>text.txt</i>).<br><br>
|
||
|
|
||
|
Dort schreiben wir folgendes rein:
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
PHP-Einfach|Wie geht es euch?
|
||
|
Andavos|Super Site
|
||
|
Peter|Hier kann man echt viel lernen
|
||
|
</pre>
|
||
|
</font>
|
||
|
|
||
|
Den Text könnt ihr euch selber aussuchen, aber achtet darauf das zwischen dem Namen und dem Text ein | (Alt Gr + <) steht.<br><br>
|
||
|
|
||
|
Jetzt wollen wir das mal wieder ausgeben.<br><br>
|
||
|
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
<?php
|
||
|
$datei = file("text.txt");
|
||
|
|
||
|
foreach($datei AS $ausgabe)
|
||
|
{
|
||
|
$zerlegen = explode("|", $ausgabe);
|
||
|
|
||
|
echo "Von <b>$zerlegen[0]</b><br>
|
||
|
$zerlegen[1]<br><br>";
|
||
|
}
|
||
|
?>
|
||
|
</pre>
|
||
|
</font>
|
||
|
|
||
|
Da wir einen Zeilenumbruch als Trennzeichen der einzelnen Einträge benutzt haben, empfiehlt es sich hier, diese Datei per <i>file()</i> einzulesen.<br>
|
||
|
Danach kommt eine <i>foreach-Schleife</i>. Jede Zeile aus der Datei wurde ja als eigenes Arrayelement gespeichert, und mit der foreach-Schleife gehen wir diese nacheinander durch.<br><br>
|
||
|
|
||
|
Dabei haben wir das aktuelle Arrayelement per <b>AS</b> in die Variable $ausgabe gespeichert. Mit <b>explode</b> trennen wir die einzelnen Abschnitte voneinander, anhand des Trennzeichen <b>|</b> und speichern dies in dem Array <b>$zerlegen</b><br><br>
|
||
|
|
||
|
Danach geben wir mit <b>echo</b> den Inhalt der Datei aus.<br><br>
|
||
|
|
||
|
Die Ausgabe würde so aussehen:
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
Von <b>PHP-Einfach</b>
|
||
|
Wie geht es euch?
|
||
|
|
||
|
Von <b>Andavos</b>
|
||
|
Super Site
|
||
|
|
||
|
Von <b>Peter Pan</b>
|
||
|
Hier kann man echt viel lernen
|
||
|
</pre>
|
||
|
</font>
|
||
|
|
||
|
|
||
|
Man kann natürlich auch eine <i>for-</i> oder <i>while-Schleife</i> benutzten, dies würde dann so aussehen:<br>
|
||
|
<font color="#606060">
|
||
|
<pre>
|
||
|
<?php
|
||
|
$datei = file("counter.txt");
|
||
|
|
||
|
for($a = 0; $a < count($datei); $a++)
|
||
|
{
|
||
|
$zerlegen = explode("|", $datei[$a]);
|
||
|
|
||
|
echo "Von <b>$zerlegen[0]</b><br>
|
||
|
$zerlegen[1]<br><br>";
|
||
|
}
|
||
|
|
||
|
echo "<br><br>Und jetzt die while-Schleife";
|
||
|
|
||
|
$datei = file("counter.txt");
|
||
|
|
||
|
$a = 0;
|
||
|
while($a < count($datei))
|
||
|
{
|
||
|
$zerlegen = explode("|", $datei[$a]);
|
||
|
|
||
|
echo "Von <b>$zerlegen[0]</b><br>
|
||
|
$zerlegen[1]<br><br>";
|
||
|
$a++;
|
||
|
}
|
||
|
?>
|
||
|
</pre>
|
||
|
</font>
|
||
|
|
||
|
|
||
|
Mit dieser Funktion können wir schon komplexe Scripts erstellen, die nur Textdateien benötigen, darunter gehören auch recht sichere Login-Systeme.<br><br>
|
||
|
|
||
|
Als nächstes schauen wir uns die <a href="einf_php_datum.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_datum.php">Datum und Uhrzeit</a> Funktion von PHP an.<br><br>
|
||
|
|
||
|
<a href="http://www.php-einfach.de/nav_impressum.php">Autor Andavos</a>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<div align="center"><a href="#oben">Nach oben</a></div>
|
||
|
</td>
|
||
|
<td height="100" width="10"></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
</td>
|
||
|
<td valign="top" bgcolor="#FFE09F" width="160">
|
||
|
|
||
|
<table width="160" cellspacing="0" border="0" cellpadding="0">
|
||
|
<tr>
|
||
|
<td height="100" width="5"></td>
|
||
|
<td valign="top" class="black2" height="100" width="150">
|
||
|
|
||
|
<br><b><center><img src="grafiken/side_news.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_news.gif" width="150" height="25" border="0" alt=""></center></b>
|
||
|
|
||
|
|
||
|
<a target="_blank" href="http://www.php-einfach.de/nav_news.php">News</a>
|
||
|
<br><br>
|
||
|
|
||
|
<b><center><img src="grafiken/side_forum.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_forum.gif" width="150" height="25" border="0" alt=""></center></b>
|
||
|
<a target="_blank" href="http://forum.php-einfach.de/">Forum</a>
|
||
|
<br><br>
|
||
|
|
||
|
<b><center><img src="grafiken/side_newsletter.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_newsletter.gif" width="150" height="25" border="0" alt="Newsletter"></center></b>
|
||
|
|
||
|
<form target="_blank" method="post" action="http://www.php-einfach.de/clanletter/save.php">
|
||
|
|
||
|
|
||
|
<br> <br>
|
||
|
<div align="center">© PHP-Einfach.de 2003 - 2007 </div>
|
||
|
</td>
|
||
|
<td height="100" width="5"></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</body>
|
||
|
</html>
|