PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   *.txt-Dateien aus Verzeichnis auslesen (http://www.selfphp.de/forum/showthread.php?t=5902)

thorben 25.10.2003 13:09:16

*.txt-Dateien aus Verzeichnis auslesen
 
Guten Tag!

In einem Verzeichnis liegen eine unbestimmte Anzahl an *.txt-Dateien, diese möchte ich auslesen, und die Inhalte der *.txt-Dateien nach Datum sortiert (das neuste ganz oben!) auslesen.
Vielleicht kann mir mal jemand einen Tip geben - ich finde den Anfang nicht.

Danke & schönen Tag.
Thorben.

Fuchs 25.10.2003 19:31:31

PHP-Code:

<?php

$d 
dir('path/to/txt/files/with/trailing/slash/');
$files = array();
$toEnd '.txt';

while ((
$entry $d->read()) !== false) {

  if (
is_file($d->path.$entry) &&
     (
StrCaseCmp($toEndsubstr($entry, -(strlen($toEnd)))) == 0)) {
    
$files[$entry] = filemtime($d->path.$entry);
  }

}

$d->close();

arsort($files);

foreach(
$files as $name => $timestamp){
    echo 
"$name => ".date('r'$timestamp)."n";
}

?>

Wenn du die Dateiendung case sensitive vergleichen willst (nur .txt nicht .TXT, .TxT etc...) musst du anstatt StrCaseCmp() StrCmp() benutzen.

HTH Andre

thorben 25.10.2003 19:47:26

Danke.
Das funktioniert wunderbar, aber mein Ziel ist es (vielleicht habe ich mich nicht gründlich genug ausgedrückt!), die Inhalte dieser Datei auszulesen, nicht die Dateinamen.
Ich bräuchte quasi die Funktion, die mir dabei hilft, alle Datei hintereinander weg zu öffnen und anzuzeigen.

Danke.
thorben.

nino 25.10.2003 21:05:59

Ich bin mir nicht sicher, aber so könnte es vielleicht gehen

PHP-Code:

<?php

$d 
dir('path/to/txt/files/with/trailing/slash/');
$files = array();
$toEnd '.txt';

while ((
$entry $d->read()) !== false) {

  if (
is_file($d->path.$entry) &&
     (
StrCaseCmp($toEndsubstr($entry, -(strlen($toEnd)))) == 0)) {
    
$files[$entry] = filemtime($d->path.$entry);
  }

}

$d->close();

arsort($files);

foreach(
$files as $name => $timestamp){

//----------Liest den Inhalt der Datei----------
$str fread ($namefilesize($name));
$str nl2br($str);
//----------------------------------------------

echo "$name => ".date('r'$timestamp)."n";

//-------------Gibt den Inhalt aus--------------
echo "$str";
//----------------------------------------------

}

?>

Gruß nino

Fuchs 25.10.2003 21:21:57

mittels readfile() kannst sie 1:1 zum Client ausgeben.

thorben 25.10.2003 21:43:53

Puh, ziemlich kompliziert für jemanden, der sich noch nicht so gut auskennt.
Danke.

Bekomme jetzt folgende Fehlermeldung:

Warning: fread(): supplied argument is not a valid File-Handle resource in /www/htdocs/qw/index.php on line 122
test.txt => Sat, 25 Oct 2003 21:42:21 +0200

(test.text ist die Datei, die er in dem vorgegebenen Verzeichnis findet.)

Ist da was falsch gelaufen?

Jürg 25.10.2003 22:41:35

Bitte schreib doch immer, was in der betreffenden Programmzeile steht, am Besten auch die, die vor- und nachher stehen. Also Zeile 121 - 123.
Damit hilfst Du allen.

Fuchs 25.10.2003 23:02:52

Zitat:

Original geschrieben von Jürg
Bitte schreib doch immer, was in der betreffenden Programmzeile steht, am Besten auch die, die vor- und nachher stehen. Also Zeile 121 - 123.
Damit hilfst Du allen.

Warscheinlich der Code von Nino. Denn der Code von Nino oeffnet die Datei nicht. fread() erwartet als 1. Argument naemlich ein Hanlde (von fopen). Also schreib doch bitte so etwas in der Art:

PHP-Code:

<?php
foreach ($file as $filename => $timestamp) {
  echo 
"Letzte aenderung der Datei: ".date('r'$timestamp);
  
readfile($pathToTxt.$filename);
}
?>


nino 26.10.2003 12:02:05

Verdammt, hab tatsächlich vergessen die Datei vorher zu öffnen, sorry!

Gruß nino

thorben 26.10.2003 14:16:02

Danke für Eure große Mühe, aber es ist bestimmt total quatschig, jeden Beitrag in eine einzelne Textdatei zu schreiben, gel.
Deswegen versuche ich es mittels Arrays, vielleicht habe ich da mehr Chancen, meine Ziele zu verwirklichen.

Thorben.


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:19:17 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.