Zeile überschreiben

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

  • Zeile überschreiben

    Hallo, ich habe das Problem, dass ich in einer Datei eine Zeile ersetzen möchte. Statt dessen wird aber die neue Zeile unter die zu löschende/ersetzende gesetzt.

    PHP-Code:

    $file_handle 
    fopen($file'r+');

    while (!
    feof($file_handle)) {
                                              
                          
    $line fgets($file_handle);
                          if (
    preg_match("/url/",$line)) {
                              
                              
    $line str_replace($suche$bild_m_name2$line);
                              
    fwrite($file_handle,$line);
                          }
                          
                                                
     }
                        
                         
    fclose($file_handle); 
    An was kann das liegen?
    danke

  • #2
    Naja, du hast es auch so programmiert.

    Wenn du Text in einer Datei ersetzen möchtest, solltest du erstmal die komplette Datei einlesen, die Inhalte überschreiben und danach die Datei neu schreiben.

    Kommentar


    • #3
      Zitat von h3ll Beitrag anzeigen
      Naja, du hast es auch so programmiert.

      Wenn du Text in einer Datei ersetzen möchtest, solltest du erstmal die komplette Datei einlesen, die Inhalte überschreiben und danach die Datei neu schreiben.
      ok, das mit dem einlesen, überschreiben und speichern ist mir bekannt. Ich werde es auch wieder so machen.
      Aber eigentlich macht der replace-Befehl nicht das was er eigentlich bedeutet, sondern nur ein inneres "append". Und das verstehe ich nicht.

      Kommentar


      • #4
        Dein fwrite() macht was anderes, als du glaubst. Mit str_replace() hat das nichts zu tun.

        Kommentar


        • #5
          Zitat von h3ll Beitrag anzeigen
          Dein fwrite() macht was anderes, als du glaubst. Mit str_replace() hat das nichts zu tun.
          Mein Satz hat eine leicht verständliche Logik, man muss deshalb PHP nicht gleich zu einem Mysterium machen.

          Kommentar


          • #6
            Nichts wird zum Mysterium gemacht. Es hat halt nichts mit dem replace-Befehl zu tun.

            fwrite() schreibt an die Stelle, wo der File Pointer steht. Und der steht nun mal nach einem fread() unter der eingelesenen Zeile. Somit schreibt fwrite() in die Zeile darunter. Das ist ein ganz klares und nachvollziehbares Verhalten, das so auch dokumentiert ist.

            Kommentar


            • #7
              Das kann man verstehen,
              danke!

              Kommentar

              Lädt...
              X