phase: Verzeichnisinhalt auf mehrere Dateien aufteilen?

hallo, ich lese mit folgendem code ein verzeichnis aus und schreibe den inhalt der dateien in eine indexdatei um eine übersicht zuerhalten.

[php]
 $INDEXdata  = implode(' ', file("index_template.tpl"));

$d = dir("./tmp/".$Dir);
 while (false !== ($entry = $d->read())) {
  if($entry != "." && $entry != ".." && strstr($entry,".htm") == false ){
  $lines = file ("./tmp/".$Dir."/".$entry);
  foreach ($lines as $line_num => $line) {
     $INDEXCONTENT .= "$line";
  }

}
 }
 $INDEXfp  = fopen("tmp/".$Dir."/index.htm", "w+");
 $INDEXdata  = str_replace("<#INDEXCONTENT>","$INDEXCONTENT",$INDEXdata);

echo "<code><b>Indexseite wird erstellt:</b></code><br />\n";
 echo "<code><a href="tmp/".$Dir."/index.html" target="_blank">".$Dir."/index.html</a></code><br>\n";

fwrite($INDEXfp, "$INDEXdata");
 fclose($INDEXfp);
   unset($INDEXCONTENT);
 $d->close();
[/php]

das klappt soweit gut, nur möchte , wenn in dem verzeichnis mehr als x dateien liegen den inhalt auf mehrere indexe verteilen und diese dann untereinander verlinken. hier komme ich leider nciht weiter und würde mich über einen tipp freuen.

gruß
phase

  1. hi,

    das klappt soweit gut, nur möchte , wenn in dem verzeichnis mehr als x dateien liegen den inhalt auf mehrere indexe verteilen und diese dann untereinander verlinken. hier komme ich leider nciht weiter

    was hast du bisher versucht, wo ist dein ansatz?
    ich sehe bisher nicht mal einen mitlaufenden zähler ...

    prinzip: zähler mitlaufen lassen, wenn grenzwert überschritten:

    • bisherige ausgabedatei schließen, neue öffnen
    • zähler wieder auf 0 setzen

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. hallo wahsaga,

      prinzip: zähler mitlaufen lassen, wenn grenzwert überschritten:

      • bisherige ausgabedatei schließen, neue öffnen
      • zähler wieder auf 0 setzen

      das prinzip ist mir klar nur weis sich nicht wie/wo ich den zähler in der schleife setzen soll, bin leider etwas unerfahren mit der verwendung von schleifen. muss der zähler in die while- oder in die for-schleife?

  2. hallo, ich lese mit folgendem code ein verzeichnis aus und schreibe den inhalt der dateien in eine indexdatei um eine übersicht zuerhalten.

    [php]
    $INDEXdata  = implode(' ', file("index_template.tpl"));

    Das ist die unperformanteste Art einen Inhalt zu beziehen.

    $d = dir("./tmp/".$Dir);
    while (false !== ($entry = $d->read())) {
      if($entry != "." && $entry != ".." && strstr($entry,".htm") == false ){
      $lines = file ("./tmp/".$Dir."/".$entry);
      foreach ($lines as $line_num => $line) {
         $INDEXCONTENT .= "$line";
      }

    }
    }

    Unübersichtliches Gewuschtel würde ich das mal taurfen.

    $INDEXfp  = fopen("tmp/".$Dir."/index.htm", "w+");

    Hier öffnest Du eine "index.htm"

    $INDEXdata  = str_replace("<#INDEXCONTENT>","$INDEXCONTENT",$INDEXdata);

    echo "<code><b>Indexseite wird erstellt:</b></code><br />\n";
    echo "<code><a href="tmp/".$Dir."/index.html" target="_blank">".$Dir."/index.html</a></code><br>\n";

    Hier verweist Du auf eine "index.html" und unten schreibst Du das das soweit funktioniert. Aha - man lern doch nie aus...

    fwrite($INDEXfp, "$INDEXdata");
    fclose($INDEXfp);
       unset($INDEXCONTENT);
    $d->close();

    das Verzeichnis hätte längst Schon geschlossen werden können

    [/php]

    $trenn='
    <hr>
    ';
    $a=0;
    $b=2;
    $c=0;
    $d='tmp/'.$Dir;
    $d=(substr($d,-1)=='/') ? $d : $d.'/';
    $e=opendir($d);

    while(($f=readdir($e))!=FALSE)
     if(!is_dir($d.$f) && substr($f,-4)!='.htm')
      {
      $g[$a][$f]=file_get_contents($d.$f);

    if($c==$b)
       {
       $c=0;
       $a++;
       }
      else $c++;
      }
    $j='';
    $h='';

    for($i=0;$g[$i];$i++)
       {
       $h.='<a href="'.$i.'.htm">';
       foreach($g[$i] as $k=>$v)
          {
          $h.=$k.'<br />';
          $j[$i].=$v.$trenn;
          }
       $h.='</a>';
       }
    for($i=0;$j[$i];$i++)
       file_put_contents($i.'.htm',$h.$j[$i]);

    echo 'habe fertig! <a href="'.$d.'0.htm">magste mal sehn?</a>';

    Gruß aus Berlin!
    eddi