Zeichen ersetzen

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

  • Zeichen ersetzen

    Hallo Zusammen,


    Ich habe da ein Problem, und zwar
    Ich möchte in einer "text.txt" Datei die Zeichenfolge "//hier" mit der Zeichenfolge "Ersatz" ersetzen, habe hierfür diesen Script geschrieben, aber es funktioniert leider nicht.

    <?php

    $datei=fopen("text.txt","a");

    $ersatz=str_replace("//hier","Ersatz","$datei");

    fclose($datei);

    ?>

    Könnte mir vielleicht jemand helfen, was mache ich falsch, wo ist der Fehler?
    Ich bin mir auch gar nicht so sicher, ob es mit dieser Funktion geht.

    Eines voraus - habt bitte Geduld mit mir - bin in Sachen PHP ein
    blutiger Anfänger.

    Für ein kleines Beispiel wäre ich echt dankbar!

    Gruß
    geolander

  • #2
    Re: Zeichen ersetzen

    ein thema, das wirklich ideal unter "Fragen/Vorschläge zum Forum" passt ... *seufz*, *verschieb*

    Original geschrieben von geolander
    aber es funktioniert leider nicht.
    kein wunder ...

    PHP-Code:
    $datei=fopen("text.txt","a");

    $ersatz=str_replace("//hier","Ersatz","$datei");

    fclose($datei); 
    also, was machst du denn hier.

    du öffnest due datei, hast mit $datei anschliessend einen zeiger auf diese geöffnete datei (unter der annahme, dass beim öffnen nix schiefgeht).

    und dann?

    in $datei steht jetzt noch lange nicht der dateiinhalt, den musst du erst mal auslesen! sieh dir dazu fgets im manual an.

    und anschliessend musst du den ersetzten text auch noch in die datei zurückschreiben, davon sehe ich hier auch noch nichts ...


    http://dclp-faq.de/ch/ch-open_exec.html dürfte dir weitere anregungen und verständnishilfen bieten.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hi!

      Acha!
      Genau das habe ich befürchtet - wirklich.
      Jetzt habe ich aber ein nächstes Problem, und zwar:

      die Datei "text.txt" sieht so aus

      balkon
      türen
      geländer

      //hier

      fenster
      scheiben

      Nun soll nur die Zeichenkette "//hier" ausgetauscht werden, wenn ich aber den Inhlat komplett auslese und ihn in die leere Datei hineinschreibe nach dem ich zunächst den neuen Inhlat hineingeschieben habe, erscheint mein Eintrag am Anfang der Datei.

      also:

      bodenbeläge - der neue Eintrag ( der Ersatz aus der Funktion)

      (und dann kommt der "alte" Dateiinhlat hin)

      balkon
      türen
      geländer

      //hier

      fenster
      scheiben

      oder?

      ich möchte aber nur das "//hier" austauschen.

      Gibt es vielleicht eine andere Funktion dafür die den Dateiinhalt nach "//hier" ausließt ?

      Gruß
      geolander

      Kommentar


      • #4
        Original geschrieben von geolander
        Nun soll nur die Zeichenkette "//hier" ausgetauscht werden, wenn ich aber den Inhlat komplett auslese und ihn in die leere Datei hineinschreibe nach dem ich zunächst den neuen Inhlat hineingeschieben habe, erscheint mein Eintrag am Anfang der Datei.
        ja dann bleib doch einfach beim replace, das war doch gar nicht so falsch - nur das drumherum fehlte halt noch.

        also:
        • datei zum lesen öffnen
        • ganzen inhalt auslesen
        • datei schließen
        • mit replace alten teil durch neuen ersetzen
        • datei zum schreiben öffnen
        • kompletten, teilweise ersetzen inhalt wieder reinschreiben
        • datei schliessen


        und vllt. auch noch mal Wie kann ich in einer Datei eine Zeile einfügen oder löschen? anschauen ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Hallo wahsaga,

          Herzlichen Dank für die Hilfe!

          Schade, es ist schon das zweite Forum in dem ich auf irgendwelche Seiten verwiesen werde - da darf ich mich durch unzählige Begriffe durchfressen, die mir momentan (noch) nichts sagen.


          Ein Beispiel würde einige Fragen lösen, denn so weit war ich schon, aber es funktioniert leider nicht :-(
          Da könnte ich vielleicht etwas ableiten oder es würde endlich "klick" machen ...

          Irgendetwas mache ich eben immer noch falsch, aber was soll's, ist einfach so.

          Nun werde ich lieber die Bücher auf meinem Schreibtisch durchwülen in der Hoffnung, dass ich da schneller zum Erfolg komme.

          Schade.

          Kommentar


          • #6
            also eigentlich hat dir wahsaga den ablauf ja hingeschrieben. Müssen nur noch die passenden befehle her.
            um dateien zu öffnen nimmt man fopen
            zum lesen von Dateiinhalten is fread da
            zum schreiben fwrite
            wichtig ist, dass du die datei zweimal öffnest (enmal zu lesen einaml zum schreiben)

            Den Teil Datei zum lesen öffnen, inhalt auslesen, datei schließen kann auch file_get_contents übernehmen (allerdings erst ab php version 4.3.0).
            so jetzt kennst du den ablauf und die befehle. fehlt nur noch der code...

            Kommentar


            • #7
              Mein Gott .... du brauchst genau 3 Funktionen zum lösen deines Problems, eine davon (str_replace()) haste ja anscheinend schon verstanden, bleiben 2 übrig .... entweder file_get_contents() und file_put_contents() oder die umständliche version mit fopen(), fgets(), fputs(),fclose() ....

              Ich denke 2-3 Seiten Manual sind für jeden zumutbar, oder?

              mfG
              CMS-X Medien- und Modelagentur

              Kommentar


              • #8
                Original geschrieben von geolander
                Schade, es ist schon das zweite Forum in dem ich auf irgendwelche Seiten verwiesen werde
                ja, wirklich schade - dann ist dies hier also schon die zweite stelle, an der du überzogene ansprüche anmeldest, und den sinn eines forums missverstehst.

                foren sind nicht dazu da, um komplettlösungen vorzukauen, sondern um denkanstöße zu geben - die sollten idR. weiterhelfen, wenn jemand ausreichend logisches verständnis mitbringt, was man als programmierer nun mal braucht.

                klar gibt es auch überall immer wieder kleine n00bs, die dann auf so eine frage hin eine komplettlösung hinschreiben (die dann meist aber auch noch vor fehlern strotzt), weil sie denken sich damit profilieren zu können, und der menschheit einen gefallen zu tun glauben.
                dass dem aber nicht so ist, darüber sind sicher die meisten hier einer meinung ...



                also, wenn es trotz links zu seiten mit guten beschreibungen und beispielen immer noch nicht klappt: dann zeig gefälligst her, was du bereits versucht hast, und wir können dir dann anhand dessen erklären, was du noch falsch gemacht hast. sowas bezeichnen wir hier als lernen, und helfen auch gerne dabei.
                aber "ich wills gerne fertig, weil ich es dann besser verstehe" - das läuft hier nicht.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar

                Lädt...
                X