PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Gehe in Verzeichnis, lies aus und gib den Inhalt in <p></p> wieder...


nonharderware
2021-09-29, 14:04:48
Hallo,

es geht um PHP:
Gehe in Verzeichnis, check wie viele .txt vorhanden sind, lies dort den Inhalt ein (Array?) und gib den Inhalte jeder .txt jeweils in ein <p></p> wieder....

Die .txt sind nach dem Schema YYYYMMDDxxx.txt aufgebaut.
Es soll noch vor Ausgabe nachgesehen werden wie das aktuelle Datum ist und welcher Abstand zu jenem in der .txt ist.
Nach Zeit X wird die Datei + Inhalt ignoriert.

Bzw. eventruell wäre es besser die Datumsabfrage vorher zuu machen.

Wie setzt man dies am Besten um?

BAGZZlash
2021-09-29, 15:20:56
Ich gehe davon aus, dass bei "YYYYMMDDxxx.txt" das "xxx" irgendwelche und beliebig viele Zeichen sind.


<?php
$DirHandle = opendir("./Texte");
$FileNames;
$FileCounter = 0;
while ($FileNames[$FileCounter] = readdir($DirHandle))
{
if (strpos(strtolower($FileNames[$FileCounter]), ".txt")) $FileCounter++;
}
closedir($DirHandle);

$MaxAge = 365; // Tage.
$Now = new DateTime();
$FileContent;
for ($i = 0; $i < $FileCounter; $i++)
{
$Then = date_create(substr($FileNames[$i], 0, 4) . "-" .
substr($FileNames[$i], 4, 2) . "-" .
substr($FileNames[$i], 6, 2));
$Interval = date_diff($Now, $Then)->format('%a');

if ($Interval <= $MaxAge)
{
echo ("Inhalt von Datei \"" . $FileNames[$i] . "\":<br><br>");

$FileContent = file("./Texte/" . $FileNames[$i]);
for ($j = 0; $j < count($FileContent); $j++)
{
echo ($FileContent[$j] . "<br>");
}
}
}
?>

nonharderware
2021-09-29, 19:08:06
Ich gehe davon aus, dass bei "YYYYMMDDxxx.txt" das "xxx" irgendwelche und beliebig viele Zeichen sind.


<?php
$DirHandle = opendir("./Texte");
$FileNames;
$FileCounter = 0;
while ($FileNames[$FileCounter] = readdir($DirHandle))
{
if (strpos(strtolower($FileNames[$FileCounter]), ".txt")) $FileCounter++;
}
closedir($DirHandle);

$MaxAge = 365; // Tage.
$Now = new DateTime();
$FileContent;
for ($i = 0; $i < $FileCounter; $i++)
{
$Then = date_create(substr($FileNames[$i], 0, 4) . "-" .
substr($FileNames[$i], 4, 2) . "-" .
substr($FileNames[$i], 6, 2));
$Interval = date_diff($Now, $Then)->format('%a');

if ($Interval <= $MaxAge)
{
echo ("Inhalt von Datei \"" . $FileNames[$i] . "\":<br><br>");

$FileContent = file("./Texte/" . $FileNames[$i]);
for ($j = 0; $j < count($FileContent); $j++)
{
echo ($FileContent[$j] . "<br>");
}
}
}
?>


Genau.
Fortlaufende Nummer, falls mehrere Einträge pro Tag existieren.

Vielen Dank für den Code!