aktuelle.kurse/oldies/m133/4_Modulinhalte_und_Uebungen/01-Grundlagen/03-PHP-einfach/einf_php_dateien2.php.htm
Müller Harald 3fdacd20c0 muh
2022-07-28 09:14:44 +02:00

391 lines
16 KiB
HTML

<html>
<head>
<title>PHP-Einfach.de - PHP Einf&uuml;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>&raquo;</b> Startseite</a><br>
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_news.php"><b>&raquo;</b> News&uuml;bersicht</a><br>
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_email.php"><b>&raquo;</b> Kontakt</a><br>
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_impressum.php"><b>&raquo;</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>&raquo;</b> Forum</a><br>
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_gaestebuch.php"><b>&raquo;</b> G&auml;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>&raquo;</b> Einf&uuml;hrung PHP</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_anfang.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_anfang.php"><b>&raquo;</b> Anfang</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_erste_schritte.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_erste_schritte.php"><b>&raquo;</b> Erste Schritte</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_variablen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_variablen.php"><b>&raquo;</b> Variablen</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_if-anweisung.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_if-anweisung.php"><b>&raquo;</b> if-Anweisung</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_logische_operatoren.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_logische_operatoren.php"><b>&raquo;</b> Log. Operatoren</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_uebung1.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_uebung1.php"><b>&raquo;</b> &Uuml;bung</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_dateien.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_dateien.php"><b>&raquo;</b> Dateien</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_schleifen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_schleifen.php"><b>&raquo;</b> Schleifen</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_array.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_array.php"><b>&raquo;</b> Array</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_dateien2.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_dateien2.php"><b>&raquo;</b> Dateien Teil 2</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_datum.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_datum.php"><b>&raquo;</b> Datum & Zeit</a><br>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_email.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_email.php"><b>&raquo;</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>&raquo;</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>&raquo;</b> N&uuml;tzliche Funktionen</a><br>
</div>
&nbsp;&nbsp;&nbsp;<a class="blue" href="einf_php_sessions.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_sessions.php"><b>&raquo;</b> Sessions</a><br><br>
<a class="blue" href="einf_mysql.php.htm" tppabs="http://www.php-einfach.de/offline/einf_mysql.php"><b>&raquo;</b> Einf&uuml;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&ouml;nnen.<br><br>
Daf&uuml;r gibt es 2 M&ouml;glichkeiten, die erste M&ouml;glichkeit ist es, die Datei Zeilenweise in ein Array einzulesen. <br><br>
Die erste M&ouml;glichkeit ist zu &uuml;berpr&uuml;fen, ob der Dateizeiger am Ende der Datei ist. Sobald der Dateizeiger am Ende der Datei ist, h&ouml;rt der Script auf zu lesen.<br><br>
Dies geht so:
<font color="#606060">
<pre>
&lt;?php
$userdatei = fopen("datei.txt","r");
while(!feof($userdatei))
{
$zeile = fgets($userdatei,1024);
echo $zeile;
}
fclose($userdatei);
?>
</pre>
</font>
Zuerst &ouml;ffnen wir die Datei <b>datei.txt</b> mit dem Lesemodus <b>r</b>.<br><br>
Die <b>while-Schleife</b> l&auml;uft solange bis, der Dateizeiger am Ende der Datei steht. Dies &uuml;berpr&uuml;fen wir mit <b>!feof</b>.<br>
Danach lesen wir einfach die n&auml;chsten 1024 Zeichen aus der Datei aus und geben diese aus.<br>
Man kann nat&uuml;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&uuml;rlich viel l&auml;nger, als wenn PHP auf einmal z.B. 1024 Zeichen liest.<br>
Ihr k&ouml;nnt auch gr&ouml;&szlig;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&ouml;glichkeit ist deutlich leichter, und zwar benutzt man dann den Befehl <b>file</b>:
<font color="#606060">
<pre>
&lt;?php
$datei = file("datei.txt");
?>
</pre>
</font>
Danach k&ouml;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&ouml;nnen den Inhalt jetzt so wie ein Array behandeln, also nach Werten suchen (<b>in_array</b>), diese Werte sortieren oder auch Werte hinzuf&uuml;gen.<br><br>
<font color="#606060">
<pre>
&lt;?php
$datei = file("datei.txt");
foreach($datei AS $meine_datei)
{
echo $meine_datei."&lt;br>";
}
?>
</pre>
</font>
<br><br>
Ich w&uuml;rde die Funktion <b>file()</b> empfehlen. <br><br>
Wir haben auch die M&ouml;glichkeit per <b>implode()</b> ein Array anhand eines Trennzeichen zu einem String/Text zusammenzuf&uuml;gen: <br>
<font color="#606060">
<pre>
&lt;?php
$datei = implode("",file("datei.txt"));
echo $datei;
?>
</pre>
</font>
Dabei wird als Trennzeichen "" (leer) benutzt. Man kann sich dieses aneinander h&auml;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&ouml;chte man z.B. dass jede Zeile in der Datei auch eine neue Zeile im Browser ist, so wird als Trennzeichen ein &lt;br> benutzt:<br>
<font color="#606060">
<pre>
&lt;?php
$datei = implode("&lt;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&ouml;nnen wir das Array wieder speziell Abfragen.<br><br>
Diese Funktion bringt uns viele Vorteile, so k&ouml;nnen wir z.B. einen Login-Script basteln, das den Benutzername und das Passwort in einer externen Datei speichert.<br>
So k&ouml;nnen wir aber auch Texte viel leichter formatieren, z.B. die aus einem G&auml;stebuch-Script.<br>
M&ouml;chte man sp&auml;ter das Design des G&auml;stebuches ver&auml;ndern, so muss man nicht den ganzen Inhalt der Datei ver&auml;ndern (in der die Eintr&auml;ge gespeichert sind), sondern man muss nur ein paar Zeilen im PHP-Code ver&auml;ndern.<br><br>
Die Funktion kann man sowohl bei Texten, als auch bei Inhalten von gelesenen Dateien benutzen.<br><br>
<font color="#606060">
<pre>
&lt;?php
$zeile = "24.12.2006|Weihnachten|Frohes Fest";
$zerlegen = explode("|", $zeile);
echo "&lt;b>$zerlegen[0]&lt;/b>, &lt;i>$zerlegen[1]&lt;/i>
&lt;u>$zerlegen[2]&lt;/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 + &lt;).<br> <br>
Danach benutzen wir die Funktion <b>explode</b>, diese trennt unseren Text &uuml;berall, wo ein | steht. Wir k&ouml;nnten auch andere Zeichen benutzen, aber man sollte <b>immer</b> Zeichen benutzen, die man normalerweise <b>nie</b> f&uuml;r einen Text benutzen. (Also kein . (Punkt) nehmen o.&auml;.).<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&ouml;nnen wir alle gespeicherten Werte unabh&auml;ngig voneinander bearbeiten.<br>
Wenn wir dann mit <i>implode</i> das bearbeitete Array zusammenf&uuml;hren, k&ouml;nnen wir sehr leicht ver&auml;nderte Textdateien abspeichern.<br><br>
Dieses Verfahren benutzt man besonders oft, wenn man mit Textdateien arbeitet.<br>
Denn w&uuml;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&auml;re das Neu design der Ausgabe extrem schwierig. Und wenn man z.B. die eingegebene Emailadresse vor der Ausgabe noch einmal &uuml;berpr&uuml;fen m&ouml;chte, ist dies fast unm&ouml;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&ouml;nnt ihr euch selber aussuchen, aber achtet darauf das zwischen dem Namen und dem Text ein | (Alt Gr + &lt;) steht.<br><br>
Jetzt wollen wir das mal wieder ausgeben.<br><br>
<font color="#606060">
<pre>
&lt;?php
$datei = file("text.txt");
foreach($datei AS $ausgabe)
{
$zerlegen = explode("|", $ausgabe);
echo "Von &lt;b>$zerlegen[0]&lt;/b>&lt;br>
$zerlegen[1]&lt;br>&lt;br>";
}
?>
</pre>
</font>
Da wir einen Zeilenumbruch als Trennzeichen der einzelnen Eintr&auml;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&uuml;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&uuml;rlich auch eine <i>for-</i> oder <i>while-Schleife</i> benutzten, dies w&uuml;rde dann so aussehen:<br>
<font color="#606060">
<pre>
&lt;?php
$datei = file("counter.txt");
for($a = 0; $a &lt; count($datei); $a++)
{
$zerlegen = explode("|", $datei[$a]);
echo "Von &lt;b>$zerlegen[0]&lt;/b>&lt;br>
$zerlegen[1]&lt;br>&lt;br>";
}
echo "&lt;br>&lt;br>Und jetzt die while-Schleife";
$datei = file("counter.txt");
$a = 0;
while($a &lt; count($datei))
{
$zerlegen = explode("|", $datei[$a]);
echo "Von &lt;b>$zerlegen[0]&lt;/b>&lt;br>
$zerlegen[1]&lt;br>&lt;br>";
$a++;
}
?>
</pre>
</font>
Mit dieser Funktion k&ouml;nnen wir schon komplexe Scripts erstellen, die nur Textdateien ben&ouml;tigen, darunter geh&ouml;ren auch recht sichere Login-Systeme.<br><br>
Als n&auml;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">&copy; PHP-Einfach.de 2003 - 2007 </div>
</td>
<td height="100" width="5"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>