Datei lesen und Inhalt zwischen bestimtmen String ermitteln.

Crazy_down

Erfahrenes Mitglied
Hey ho, ich lese mehre Dateien aus. Der Aufbaue ist bei jeder Datei gleich nur der INhalt ist anders.
Die Dateien haben jeweils einen <TABLE> und einen </TABLE> und genau was dazwischen steht will ich in eine txt datei Schreiben bzw. zum Test erstmal ausgeben.
Bissher versuche ich das so hier.

PHP:
<?
$ordner = opendir("../plaene");
while($datei = readdir($ordner))
{
    if($datei !== "*" &&
    $datei !== "." &&
    $datei !== "..")
    {

             if(strstr($datei,"klassen") && strstr($datei,"_"))
                 {
                 $html_plaene=fopen($datei, "r");
                   while (!feof($html_plaene))
                   {
                     $inhalt=fgets($html_plaene);
                      if(strstr($inhalt,"<TABLE border=\"3\" rules=\"all\" bgcolor=\"#E7E7E7\" cellpadding=\"1\" cellspacing=\"1\">"))
                      {
                       $flag=0;
                       echo "Table gefunden, flag auf ".$flag."setzen<br>";
                              echo $inhalt;
                         if(!strstr($inhalt,"</TABLE>"))
                         {
                           $flag=1;
                           echo "table ende gefunden, flag auf:  ".$flag."setzen<br>";
                         }
                    }

              //    fclose($html_plaene);
                    //    fclose($plaene_schreiben);
              }
                 }
         }
}
?>

Aber er gibt nichts aus. Irgendwo blick ich da grade nicht durch.
Ich hoffe ihr könnt mir helfen.

danke
greetz
crazy_down
 
Bekommst du gar keinen Inhalt angezeigt?

Du überprüfst ja auch eigentlich nur, ob der String in $inhalt drin ist, und wenn dieser nicht vorhanden ist, hört er natürlich auf zu suchen, und gibt gar nichts mehr aus.
 
Nein ich bekomme gar keinen Inhalt angezeigt. Er zeigt an das er es findet und das er Flag auf 0 und dann auf 1 setzt aber zeigt keinen Inhalt an.
 
Also ich kenne es ja auch eigentlich nur so, dass man strstr einer Variable zuweist, und dann damit weiter arbeitet, aber sowieso ist glaub ich strstr beim letzten mal fehl am Platz, weil dies ja eigentlich den String ausgibt ab der Stelle er dein Suchmuster gefunden hat.

Ich würde vorschlagen das du mit strpos() die beiden Positionen suchst und dann mit substr() den Inhalt ausliest.
 
Uhm, danke. Deine Antwort hat mich auf die Idee gebracht mal das ! weg zu nehmen ^^
das war nur Testweise und hat den Code total versaut.

Vorher:
PHP:
 if(!strstr($inhalt,"</TABLE>"))
Nachher:
PHP:
 if(strstr($inhalt,"</TABLE>"))

Jetzt geht es ;-)

Mal eine andere Frage ohnen einen neuen Thread zu machen.
wenn ich den INhalt jetzt in die Txtdatei schreibe und diese wieder auslesen möchte.
Will ich nach den TR suchen und wenn es 10 mal gefunden und ausgegeben wurde, will ich das er eine neue Seite macht (anlegt oder nur erzeugt) und da die nächsten 10 Datensätze.

Die ich dann Automatisch durch wechseln möchte und wenn alle durch sind wieder zum ersten oder einfach das Script neu ausführt.

Aber wie mache ich das mit den 10er Sätzen ?

Danke.
 
Ahh ok. Und was wäre das Ergebniss ? also wenn es 10 ist soll er ja eine neue Seite machen und zu dieser wechseln. Nur wie ?
 
Also wenn du dann 10 raus bekommst, dann machst du einfach

PHP:
$datei = fopen("untiteld.php", w);
fwrite($datei, $inhalt);
fclose($datei);
// Und dann einfach zur der Datei springen durch:
header("location:untiteld.php");
 
Ehm bei deinem Vorschlag glaube ich verliere ich den Ursprungspunkt.
Aber mal sehn erstmal bis dahin kommen ^^

So sieht es jetzt aus.
PHP:
// Textdatei Öffnen und 10 Zeilen pro Seite ausgeben.
$zeilen_seite=fopen("plaene.txt", "r");
$schritte=1;$flag1=0;
while (!feof($zeilen_seite))
{
    //Zeilenweise auslesen
    $text=fgets($zeilen_seite);
     if(strstr($text,"<TR>"))
     {
      $flag1=0;
      echo $schritte;
      $schritte++;

         if($schritte%11==false)
         {

          echo "<br>";
         }
      }

}

Also er findet 10 x <TR> und wenn der Schritte Zaehler bei 10 ist macht er ein <br>.
Das Geht soweit. nur soll er bis zum <br> den bis dahin gefunden Text ausgeben und danach 10 sek. warten und dann auf die nächsten 10 gefundenen Sachen switchen.
das mit den 10 sek. ist noch nicht so wichtig erstmal alles ermitteln.
Aber da hängts grade.
 
Zurück