PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Multiple Dateien einlesen und ausgeben


MTJMohr
26.03.2002, 18:43:15
Bestens beschrieben ist überall, wie ich ein Verzeichnis nach Dateien auslesen, d. h. den Dateibaum einfach oder kompliziert darstellen kann (opendir, readdir etc.).

Aber wie kann ich alle Dateien eines bestimmten Verzeichnisses (z. B. ASCII-Dateien) HINTEREINANDER als externe Textdateien einlesen, ohne jedesmal den Dateinamen eingeben zu müssen?

Geht das in der Form, dass ich ein Array für alle in diesem Verzeichnis vorkommenden Dateien aufbaue? Wichtig ist aber, dass sich die Anzahl der Dateien in diesem Verzeichnis im Laufe der Zeit ändern wird, d. h. ich will eine Funktion implementieren, die auf der Basis eines nach Dateien ausgelesenen Verzeichnisses in der Lage ist, die einzelnen in diesem Verzeichnis vorhandenen Dateien einzulesen und dann (das habe ich schon implementiert) HTML-Formatiert auszugeben.

Liebe Grüsse,


Markus Mohr

MTJMohr
28.03.2002, 18:03:50
Als Beispiel für den PHP-Script-Code eignet sich folgendes:

<html>
<body marginleft="0" marginheight="0" background="../images/bg30.gif" border="0">
<center>

<?php

require_once("output.php");

print "<h2><u>Suchmaschinen</u></h2>";
print "<p>&nbsp;</p>";

chdir("beliebiger_pfad");
$current_dir = getcwd();
$handle = opendir($current_dir);
while ($name = readdir($handle))
{
if (is_file("$current_dir/$name") && ereg("^sm..txt$", $name))
{
$ereignisse = fopen($name, "r");
print "<table border='0' width='620'>";
print "<tr><td valign='top'>";
while (! feof($ereignisse))
{
$ereignis = fgets($ereignisse, 4096);
$ereignis_info = explode("|", $ereignis);
print "<b><font size='+1'>$ereignis_info[0]</font></b>";
print "<table width='600' align='center' valign='middle' cellspacing='0' border='0'>";
print "<tr>";
print "<td width='250' align='left' valign='middle' style='border-width: 0; border-color: black; border-style: solid;'>";
print "<p align='left'>&nbsp;$ereignis_info[1]</p>";
print "</td>";
print "<td width='350' align='left' valign='middle' style='border-width: 0; border-color: black; border-style: solid;'>";
print "<p align='left'>&nbsp;<a href=$ereignis_info[2]>$ereignis_info[3]</a></p>";
print "</td>";
print "</tr>";
print "</table>";
}
print "</td></tr></table><br>";
print "<p>&nbsp;</p>";
fclose($ereignisse);
}
}

do_html_exit();

?>

</center>
</body>
</html>

Die Dateien SM*.TXT (hat was mit SuchMaschine zu tun ....) sind folgendermassen aufgebaut:

Suchmaschinen allgemein (deutsch):
|Wichtige deutsche Suchmaschinen|http://www.hug-technik.com/inhalt/suchmasc.htm|http://www.hug-technik.com/inhalt/suchmasc.htm
|Apollo 7|http://www.apollo7.de/|http://www.apollo7.de/
|Eule|http://www.eule.de/|http://www.eule.de/
|Fireball|http://www.firebeall.de/|http://www.fireball.de/
|FOCUS Netguide|http://netguide.de/|http://netguide.de/
|Infoseek Deutschland|http://www.infoseek.de/|http://www.infoseek.de/
|Lotse|http://www.lotse.de/|http://www.lotse.de/
|Lycos|http://www.locos.de/|http://www.lycos.de/
|Yahoo!|http://www.yahoo.de/|http://www.yahoo.de/

Einfach einmal ausprobieren.


Ciao,



MTJMohr

MTJMohr
04.04.2002, 16:15:23
Die Leistung des Codes liegt darin, die Arrays in einer bestimmten HTML-formatierten Anordnung auszugeben. Es findet dabei aber kein "Einlesen" wie bei einer Konfigurationsdatei statt, das es im Code darauf ankommt, nicht lediglich eine, sondern alle in einem Verzeichnis vorhandenen Dateien einzulesen und formatiert auszugeben. Andernfalls, d. h. müsste nur eine einzige Datei ausgegeben werden, wäre es sehr einfach, das Auslesen und Formatieren einzelner Zeilen zu bewerkstelligen. Wie? Das lässt sich z. B. im Buch von Klaus Schmidt ("PHP 4 - Tutorial und Referenz") oder von Sterling Hughes und Andrei Zmievski ("PHP developer's cookbook, 2nd ed.)" ganz gut nachlesen.