Dateien einlesen
peschels
- php
0 Felix Riesterer0 peschels
0 Tom
hallo, ich möchte text-dateien einlesen und dann ausgeben lassen. dies funktioniert soweit ganz gut, allerdings werden diese dann in der sortierung des ordners(also i.d.R. nach Alphabet) angegeben. wie kann ich dies nach dem Datum sortieren lassen?
$dir = "./news";
$fh = opendir($dir);
$verzeichnisinhalt = array();
while (true == ($file = readdir($fh)))
{
if ((substr(strtolower($file), -3)=="txt"))
{ $verzeichnisinhalt[] = $file; }
}
......
<table width='600' border ="0">
<tr><td><h2>Neuigkeiten</h2>
<?php
for($i=0;$i<count($verzeichnisinhalt);$i++)
{
echo "<tr><td class='index'>";
$datum= substr($verzeichnisinhalt[$i],0,strlen($verzeichnisinhalt[$i])-4);
$datum = explode("-", $datum);
echo $datum[0].".".$datum[1].".".$datum[2];
echo "<td>";
$text = file_get_contents($dir."/".$verzeichnisinhalt[$i]);
echo $text;
echo "</tr>";
echo "<tr><td> ";
}
echo "</table>";
?>
Danke schonmal für eure Hilfe
Liebe(r) peschels,
$datum= substr($verzeichnisinhalt[$i],0,strlen($verzeichnisinhalt[$i])-4);
$datum = explode("-", $datum);
echo $datum[0].".".$datum[1].".".$datum[2];
das geht etwas kürzer:
~~~php
$datum= substr($verzeichnisinhalt[$i],0,10); // Datum misst (immer) zehn Zeichen
echo implode('.', array_reverse(explode('-', $datum)));
So. Nun zum Sortieren.
Das Datum steht in der Form YYYY-MM-DD im String, richtig? Na, dann könnte man ja die Minuszeichen herauslöschen und erhält eine "Zahl" mit acht Stellen (YYYYMMDD). Diese kann man ganz einfach mit anderen (auch achtstelligen) Zahlen vergleichen. Kommst Du nun beim Sortieren Deines Arrays klar?
Liebe Grüße,
Felix Riesterer.
Das Datum steht in der Form YYYY-MM-DD im String, richtig? Na, dann könnte man ja die Minuszeichen herauslöschen und erhält eine "Zahl" mit acht Stellen (YYYYMMDD). Diese kann man ganz einfach mit anderen (auch achtstelligen) Zahlen Kommst Du nun [n Deines klar?
sorry, aber ich steh wohl auf dem schlauch. könntest du mir nicht ein wenig auf die sprünge helfen
Hello,
while (true == ($file = readdir($fh)))
{
if ((substr(strtolower($file), -3)=="txt"))
{ $verzeichnisinhalt[] = $file; }
Das ist falsch herum gedacht. Es muss heißen:
while (false !== ($file = readdir($fh)))
{
if ((substr(strtolower($file), -3) == "txt"))
{
$verzeichnisinhalt[] = $file;
}
}
Und wenn Du Dir das Datum gleich dazu holen willst, dann könntest Du den Dateinamen auch als Bezeichner des Array-Elementes benutzen:
while (false !== ($file = readdir($fh)))
{
if ((substr(strtolower($file), -3) == "txt"))
{
$verzeichnisinhalt[$file] = filectime($path.'/'.$file);
}
}
http://de3.php.net/manual/en/function.filectime.php
Dann kannst Du das Array anschließend entweder nach den Bezeichnern sortieren
http://de3.php.net/manual/en/function.ksort.php
oder nach den Werten
http://de3.php.net/manual/en/function.asort.php
oder auch mit
http://de3.php.net/manual/en/function.natsort.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg