peschels: Dateien einlesen

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>&nbsp";	  
}  
echo "</table>";  
?>  
  
Danke schonmal für eure Hilfe  

  1. 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.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. 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

  2. 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

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de