Zeile überschreiben

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.

    Comment


    • #3
      Originally posted by h3ll View Post
      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.

      Comment


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

        Comment


        • #5
          Originally posted by h3ll View Post
          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.

          Comment


          • #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.

            Comment


            • #7
              Das kann man verstehen,
              danke!

              Comment

              Working...
              X