fwrite ueberschreibt datei

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

  • fwrite ueberschreibt datei

    guten morgen zusammen,

    ich moechte aus einem file etwas auslesen und in ein anderes
    file an einer bestimmten stelle wieder einfuegen. es funktioniert
    soweit eigentlich auch ganz gut, allerdings UEBERschreibe ich
    in der datei etwas, ich will aber etwas einfuegen. beispiel:

    alte datei:

    1111111
    2222222
    3333333
    4444444
    5555555
    6666666

    jetzt fuege ich AAAAAAA nach zeile 3 ein:

    neue datei:

    1111111
    2222222
    3333333
    AAAAAAA
    5555555
    6666666

    ich moechte in diesem fall aber 4444444 beibehalten, also so:

    1111111
    2222222
    3333333
    AAAAAAA
    4444444
    5555555
    6666666

    bisher habe ich das so geloest (stark gekuerzter code):

    Code:
    $fp = fopen("new/$file", "r+")
    fwrite($fp,$$var); 
    fclose($fp);
    liegt es am fopen, muss ich da einen anderen filemode nehmen? oder
    muss ich fwrite anders ausfuehren?

    bin fuer schnelle hilfe sehr dankbar!

    gruß

    x-mas
    www.thefreakdatabase.de ... freak meats freak

  • #2
    Lies die datei doch mit file, füge in der Zeile in der du möchtest einfach deinen neuen Datensatz ein und schreibe Sie anschließend neu.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      dann habe ich das file ja als array. nun muesste ich ein neues array-element einfuegen, so dass sich die dadrauf folgenden elemente jeweils um 1 erhoehen, richtig? wie mache ich das?

      gruß

      x-mas
      www.thefreakdatabase.de ... freak meats freak

      Kommentar


      • #4
        jetzt fuege ich AAAAAAA nach zeile 3 ein:
        Dann lies doch 444444 aus, addiere "4444444\n"+"AAAAAAAA" zusammen und schreib es rein.

        4444444 wird dann gelöscht, aber mit 44444444 zeilenumbruch AAAAAAA neu geschrieben ....

        Kommentar


        • #5
          @ faustus:

          das ist ja schonmal eine gute idee, doch leider ist das ganze noch ein wenig komplizierter. das file kann naemlich auch so aussehen:

          1111111
          2222222333
          333344444
          445555555666
          66677
          777778888
          888

          im detail:

          <html>
          .....
          </head>

          <body bgcolor="#ffffff" background="../images/bglw1.gif" text="#000000">



          <P>....

          so sieht das neue file in etwa aus. in dem alten file ist in der zeile unter <body> noch ein mehrzeiliges codestueck (also noch vor <P>). dieses soll nun rausgefiltert und in dem neuen file direkt hinter dem <body>-tag gesetzt werden. ist halt nur dumm, dass der <body>-tag wegen der schlechten formatierung auch ueber 2 oder 3 zeilen gehen kann.

          weiss jetzt noch jemand rat ?

          gruß

          x-mas
          www.thefreakdatabase.de ... freak meats freak

          Kommentar


          • #6
            Jetzt verstehe ich nur bahnhof. Was willst du eigentlich machen?

            Wenn du in einem csv file daten hast, dann sind die sauber getrennt ...

            Wenn du an einer bestimmten stelle etwas suchen willst, dann kannst du mit fogendem den dateizeiger woanders hin setzen:

            http://www.php.net/manual/de/function.fseek.php

            Normalerweise macht man das aber nicht so kompliziert. Normalerweise liest man die csv in ein array ein, schreibt den datensatz den man verändern will neu oder fügt etwas hinzu und dann schreibt man das ganze array wieder zurück in die datei, wobei man die datei löscht, bevor man schreibt.

            Kommentar


            • #7
              nein nein, kein cvs file. es hat sich um ca. 100 html dokumente gehandelt. ganz einfache html dokumente. naja, ganz einfach auch nicht, da es keine in einem normalen editor erstellten waren. es waren html-dokumente, die von einem programm erstellt wurden, dem es egal war, wo ein \n oder ein \r eingefuegt wird. daher war es so schwierig, genau eine zeile zu positionieren. es gab zeilen in den dokumenten, die sahen so aus:

              <body bgco
              lor='#FFFFFF' text='
              #000000'
              >

              schon da ist es unmoeglich, ein <body> mit preg_match zu suchen und in der naechsten zeile etwas einzufuegen. fast alle dokumente haben auch einige leerzeilen, die an verschiedensten stellen willkuerlich ein \n oder \r haben. naja, ich musste das jetzt also mit hand machen, da hat einen vormittag scripten nichts gebracht ... das ist mir zum allerersten mal mit php passiert, dass ich zu keinem ergebnis gekommen bin ;( (zumindest nicht so schnell).

              trotzdem vielen dank fuer die hilfe!

              gruß

              x-mas
              www.thefreakdatabase.de ... freak meats freak

              Kommentar


              • #8
                Ach so,

                wenn du homesite oder 1st page benutzt, dann kannst du erweitert suchen und ersetzen.

                Damit kannst du relativ flott diese \n suchen und gegen leerzeichen ersetzen. Das geht auch innerhalb ordnern und subordnern ohne dass die dateien geöffnet sind. Allerdings läßt sich das nicht rückgängig machen, also mit einer kopie probieren.

                Kommentar

                Lädt...
                X