bonehunter: Source von PERL > PHP

Beitrag lesen

Hallo fastix®,
Hallo Selfforum,

danke für deine Antwort und die Erklärungen zum Perl-Quelltext.

Ich denke, dass ich den Perl-Quelltext jetzt verstanden habe.

Alle Teile der Geschichte werden als .txt-Dateien im selben Verzeichnis gespeichert. Der Dateiname ist immer die nummer der Geschichte. Also heißt die erste geschichte logischerweise 1.txt

Ich habe mal versucht den Perl-Quelltext in PHP umzusetzten.
das ist mir wohl zum Teil auch gelungen, es fehlt nur noch die richtige Sortierung.

Ich versuche das mal am Beispiel zu erklären:
Wenn wir also eine kleine Geschichte mit 8 Teilen haben, sollte das so aussehen:

Kapitel 1 -> 1.txt
  Kapitel 2 -> 2.txt
    Kapitel 3 -> 4.txt
    Kapitel 3 -> 5.txt
      Kapitel 4 -> 10.txt
  Kapitel 2 -> 3.txt
    Kapitel 3 -> 6.txt
      Kapitel 4 -> 12.txt

Es siehst aber momentan so aus:
Kapitel 1 -> 1.txt
      Kapitel 4 -> 10.txt
      Kapitel 4 -> 12.txt
  Kapitel 2 -> 2.txt
  Kapitel 2 -> 3.txt
    Kapitel 3 -> 4.txt
    Kapitel 3 -> 5.txt
    Kapitel 3 -> 6.txt

Die Sortierung entspricht momentan noch der wie sie im Verzeichnis ausgelesen wurde, also nach dem Dateiname absteigend.

Hier mein neuer PHP-Quelltext. Kannst du (könnt ihr) mir helfen das mit der Sortierung hinzubekommen?

echo "<b>Überblick über die Geschichte:</b><br>\n";

// liest alle vorhandenen Dateien aus dem Verzeichnis aus
$handle = @opendir("story/");
while ($file = @readdir ($handle))
{
    //.txt vom String entfernen ($next)
    $rest = substr($file, 0, -4);
    $next = $rest;

//Berechnung des Kapitels ($chapter)
    $chapter = "0";
    while($rest >= 1)
    {
        if ($rest % 2 != 0)
        {
            $rest = $rest - 1;
        }
        $rest = $rest / 2;
        $chapter++;
    }

$datei = "/web/stuff/story/$next.txt";

$array = file($datei);

//Einrückung entsprechend Kapitel
    $margin = $chapter * 10;

echo "<spanstyle="marginleft: ".$margin."px;">Kapitel$chapter: <a href="story.php$next&chapter=$chapter">$array[2]</a> $array[0]<br></span>";
}
@closedir($handle);

mfg bonehunter