Bereiche einer TXT auslesen und einfügen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bereiche einer TXT auslesen und einfügen

    Also,
    ich möchte nur bestimmte Bereiche einer Textdatei auslesen von z.B. "<id=1>" bis "</id=1>".

    Ist das irgendwie möglich ??

    Und dann möchte ich das in HTML ausgeben.

    mfg DaPhreak
    If something's HARD to do,

    then it's not worth doing.
    (Homer J. (Jay) Simpson)

  • #2
    Code:
    <?
    // Inhalt des Files in eine Variable $Ergebnis übertragen
    $Ergebnis = "Das muß da weg<id=1>und das bleibt</id=1>und das auch wieder weg";
    $Parse_Start = "<id=1>";
    $Parse_Ende  = "</id=1>";
    
    $Position=strpos($Ergebnis,$Parse_Start) + strlen($Parse_Start); 
    $Ergebnis = substr($Ergebnis,$Position);
    
    $Position=strpos($Ergebnis,$Parse_Ende); 
    $Ergebnis = substr($Ergebnis,0,$Position);
    
    Print "Ergebnis: <b>$Ergebnis</b><br>"; // Inhalt von $Ergebnis "und das bleibt"
    ?>

    Kommentar


    • #3
      Muss ich dann mein Text manuell in die Variable
      Code:
      $Ergebnis
      eingeben ???
      If something's HARD to do,

      then it's not worth doing.
      (Homer J. (Jay) Simpson)

      Kommentar


      • #4
        Nein. File lesen und Fileinhalt in eine Variable stellen. Wie man den Inhalt der Vriable parsen kann hab ich Dir ja demonstriert.

        Kommentar


        • #5
          OK !

          Danke erstmal !!

          Ich versuch's

          If something's HARD to do,

          then it's not worth doing.
          (Homer J. (Jay) Simpson)

          Kommentar


          • #6
            So,

            und wie mach ich das,

            wenn ich mehrere solche Sektionen hab :

            z.B. <id=1>Hier steht was</id=1>
            <id=2>Hier auch was </id=2>
            ....

            ????
            If something's HARD to do,

            then it's not worth doing.
            (Homer J. (Jay) Simpson)

            Kommentar


            • #7
              kann ich dass mit einer for-Schleife machen ???
              Code:
              $anz = 30
              for ($i=0; $i<$anz;) {
              //Inhalt des Files in eine Variable $Ergebnis übertragen
              $Ergebnis = "<id=i>$textid</id=i>"; 
              $Parse_Start = "<id=i>"; 
              $Parse_Ende = "</id=i>"; 
              
              $Position=strpos($Ergebnis,$Parse_Start) + strlen($Parse_Start); 
              $Ergebnis = substr($Ergebnis,$Position); 
              
              $Position=strpos($Ergebnis,$Parse_Ende); 
              $Ergebnis = substr($Ergebnis,0,$Position); 
              }
              [Editiert von DaPhreak am 23-02-2002 um 21:30]
              If something's HARD to do,

              then it's not worth doing.
              (Homer J. (Jay) Simpson)

              Kommentar


              • #8
                mit Schleife:
                Code:
                for ($ergenis = $n=1; $ergebnis;$n++)
                  if ($ergebnis=ereg("<id=$n>(\.)</id=$n>"))
                    echo "$n: $ergebnis";
                Das setzt aber voraus, dass die Nummerierung nicht unterbrochen wird.

                Ohne Schleife geht es auch, in etwa so (nicht getestet):
                Code:
                $matches=array();
                $ergebnis = ereg('<id=([0-9])(.*)</id=\\1>', $text, $matches);
                for ($i=0; $i<count($matches); $i+=2)
                  echo $matches[$i], ': ', $matches[$i+1];
                Nachteil hier: Das funktioniert nur für fünf Klammern.

                Falls du mehr als fünf hast die auch nicht ununterbrochen nummeriert sind, mußt du wenigstens eine Maxmial-Nummer haben, bis zu der die Schleife laufen kann. Dazu muss sie allerdings ein wenig umgebaut werden.
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar


                • #9
                  Kann ich es nicht auch so machen ???

                  Code:
                  <?php
                  
                  // Auslesen der Textdatei
                  $content = fopen("news.txt","r");
                  	$textid = fgets($content, 3000);
                  	fclose($content);
                  // Inhalt des Files in eine Variable $Ergebnis übertragen 
                  $anz = 30;
                  for ($n=1; $n=$anz; $n++) {
                  //Inhalt des Files in eine Variable $Ergebnis übertragen
                  $Ergebnis = "<id=n>$textid</id=n>"; 
                  $Parse_Start = "<id=n>"; 
                  $Parse_Ende = "</id=n>"; 
                  
                  $Position=strpos($Ergebnis,$Parse_Start) + strlen($Parse_Start); 
                  $Ergebnis = substr($Ergebnis,$Position); 
                  
                  $Position=strpos($Ergebnis,$Parse_Ende); 
                  $Ergebnis = substr($Ergebnis,0,$Position); 
                  }
                  
                  // Definition //
                  $MySQL_Host  =  "localhost";
                  $MySQL_User  =  "root";
                  $MySQL_Pass  =  "sql";
                  $db_table    =  "news";
                  
                  //Verbindung zu $DB herstellen
                  $conn = mysql_connect($MySQL_Host,$MySQL_User,$MySQL_Pass)
                  or die ( "<H3>Datenbankserver nicht erreichbar</H3>");
                  $DB = "db_php";
                  
                  //Auslesen der Tabelle
                  MYSQL_SELECT_DB($DB) or die ( "<H3>Datenbank nicht vorhanden</H3>"); 
                  
                  $query_result = mysql_query("select * from $db_table ",$conn);
                  if (mysql_num_rows($query_result) == 0) {
                  	print "Keine Records gefunden db_table:$db_table<br>\n";
                  } else { 
                  	while ($row = mysql_fetch_array($query_result)) {
                  		$date      = $row[datum]; 		
                  		$id        = $row[id];
                  	}
                  }
                  //Verbindung beenden
                  mysql_close($conn);	
                  
                  ?>


                  [Editiert von Titus am 25-02-2002 um 12:02]
                  If something's HARD to do,

                  then it's not worth doing.
                  (Homer J. (Jay) Simpson)

                  Kommentar


                  • #10
                    Original geschrieben von DaPhreak
                    Kann ich es nicht auch so machen ???
                    Im Prinzip ja, aber:
                    Code:
                    <?php
                    // Auslesen der Textdatei
                    $content = [b]implode("\n", file[/b]("news.txt","r"));
                    // Inhalt des Files in eine Variable $Ergebnis übertragen 
                    $anz = 30;
                    for ($n=1; $n=$anz; $n++) {
                      $Parse_Start = "<id=[b]${/b]n>"; 
                      $Parse_Ende = "</id=[b]${/b]n>"; 
                    
                      $Position=strpos([b]$content,$Parse_Start) + strlen($Parse_Start); 
                      $Ergebnis = substr([b]$content,$Position); 
                    
                      $Position=strpos($Ergebnis,$Parse_Ende); 
                      $Ergebnis = substr($Ergebnis,0,$Position); 
                    
                      [b]echo "$n: $Ergebnis<br>";[/b]
                    }
                    ...
                    ?>
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar


                    • #11
                      Code:
                      <?php
                      // Auslesen der Textdatei
                      $content = implode("\n", file("news.txt","r"));
                      // Inhalt des Files in eine Variable $Ergebnis übertragen 
                      $anz = 30;
                      for ($n=1; $n=$anz; $n++) { 
                        $Parse_Start = "<id=${/b]n>"; [b] <--- Parse Error [/b]
                        $Parse_Ende = "</id=${/b]n>"; 
                      
                        $Position=strpos($content,$Parse_Start) + strlen($Parse_Start); 
                        $Ergebnis = substr($content,$Position); 
                      
                        $Position=strpos($Ergebnis,$Parse_Ende); 
                        $Ergebnis = substr($Ergebnis,0,$Position); 
                      
                        echo "$n: $Ergebnis<br>";
                      }
                      ...
                      ?>
                      oder meintest du :
                      Code:
                      "<id=${/b]n>";
                      und anstatt { --> [
                      ??
                      If something's HARD to do,

                      then it's not worth doing.
                      (Homer J. (Jay) Simpson)

                      Kommentar


                      • #12
                        Original geschrieben von DaPhreak
                        Code:
                        <?php
                        // Auslesen der Textdatei
                        $content = implode("\n", file("news.txt","r"));
                        // Inhalt des Files in eine Variable $Ergebnis übertragen 
                        $anz = 30;
                        for ($n=1; $n=$anz; $n++) { 
                          $Parse_Start = "<id=${/b]n>"; [b]<--- Parse Error [/b]
                          $Parse_Ende = "</id=${/b]n>"; 
                        ...
                        ?>

                        oder meintest du :
                        Code:
                        "<id=${/b]n>";
                        und anstatt { --> [
                        ??
                        Genau so meinte ich das Es fehlte halt in deinem Skript der $ vor dem n.

                        Und bei der verkürzten Einlese-Operation hat sich auch ein Fehler eingeschlichen: file braucht nur einen Parameter; denn Dateien schreiben kann man damit ja nicht, binäre Dateien per file() zu lesen macht auch keinen Sinn, also:
                        Code:
                        $content = implode("\n", file('news.txt'));
                        mein Sport: mein Frühstück: meine Arbeit:

                        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                        Kommentar


                        • #13
                          Noch ein Fehler: file() liefert die Zeilenumbrüche schon mit, der Separator für implode() muss also leer bleiben:
                          Code:
                          $content = implode('', file('news.txt'));
                          [/B][/QUOTE]
                          mein Sport: mein Frühstück: meine Arbeit:

                          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                          Kommentar


                          • #14
                            Hab jetzt mal das Script aufgerufen :

                            Code:
                            <?php
                            
                            // Auslesen der Textdatei
                            $content = implode('', file('news.txt'));
                            // Inhalt des Files in eine Variable $Ergebnis übertragen 
                            $anz = 2;
                            for ($n=1; $n=$anz; $n++) {
                              $Parse_Start = "<id=$n>"; 
                              $Parse_Ende = "</id=$n>"; 
                            
                              $Position=strpos($content,$Parse_Start) + strlen($Parse_Start); 
                              $Ergebnis = substr($content,$Position); 
                            
                              $Position=strpos($Ergebnis,$Parse_Ende); 
                              $Ergebnis = substr($Ergebnis,0,$Position); 
                            
                              echo "$n: $Ergebnis<br>";
                            }
                            
                            // Definition //
                            $MySQL_Host  =  "localhost";
                            $MySQL_User  =  "root";
                            $MySQL_Pass  =  "sql";
                            $db_table    =  "news";
                            
                            //Verbindung zu $DB herstellen
                            $conn = mysql_connect($MySQL_Host,$MySQL_User,$MySQL_Pass) or die ( "<H3>Datenbankserver nicht erreichbar</H3>");
                            $DB = "db_php";
                            
                            //Auslesen der Tabelle
                            MYSQL_SELECT_DB($DB) or die ( "<H3>Datenbank nicht vorhanden</H3>"); 
                            
                            $query_result = mysql_query("select * from $db_table ",$conn);
                            if (mysql_num_rows($query_result) == 0) {
                            	print "Keine Records gefunden db_table:$db_table<br>\n";
                            } else { 
                            	while ($row = mysql_fetch_array($query_result)) {
                            		$date      = $row[datum]; 		
                            		$id        = $row[id];
                            	}
                            }
                            //Verbindung beenden
                            mysql_close($conn);	
                            
                            ?>
                            Liefert eine Seite mit unendlich vielen Zeilen in denen folgendes steht :

                            2: Hier steht demnächst weiteres ...

                            Was dem Eintrag <id=2> 2: Hier steht demnächst weiteres ...
                            </id=2> entspricht !!!

                            Was nu ???
                            If something's HARD to do,

                            then it's not worth doing.
                            (Homer J. (Jay) Simpson)

                            Kommentar


                            • #15
                              Ahhhhhrrggg,

                              er zeigt immer nur den Eintrag an dessen ID unter $anz angegeben ist ....

                              Was'n dett ???

                              If something's HARD to do,

                              then it's not worth doing.
                              (Homer J. (Jay) Simpson)

                              Kommentar

                              Lädt...
                              X