ostpower Geschrieben 28. November 2006 Geschrieben 28. November 2006 Also ich habe folgendes Problem. Ich möchte in eine txt-Datei etwas einfügen. Wenn ich das mit fwrite mache, gibt es das Problem dass nachfolgender Text überschrieben wird. Also um es deutlich zu machen. In der txt-Datei steht folgender Text: "Der Name lautet Mustermann." So zwischen lautet und Mustermann soll jetzt der "Max" eingefügt werden, Wenn ich jetzt mit fopen und fseek an die Postition hinter lautet gehe und mit fwrite "Max" hinzufüge sieht das dann so aus: "Der Name lautetMaxstermann." Das kein Leerzeichen da is, spielt erst mal keine Rolle, entscheidend ist, dass von dem nachfolgenden Text Zeichen abgeschnitten werden. Wie kann man das Problem lösen? Und als 2. Frage: Gibt es die Möglichkeit nach einem bestimmten Wort in der txt-datei zu suchen und dieses dann zu ersetzen? Also wenn in der Datei folgendes steht: "Der Name lautet name Mustermann." Das dann "name" mit "Max" ersetzt wird. Zitieren
dennisderweber Geschrieben 28. November 2006 Geschrieben 28. November 2006 alles einlesen, mit stringfunktionen rumwurschteln und wieder in die datei schreiben. substr() PHP: substr - Manual strstr() PHP: strstr - Manual strpos() PHP: strpos - Manual usw Zitieren
ostpower Geschrieben 30. November 2006 Autor Geschrieben 30. November 2006 Ok, dass mit der Stringverarbeitung klappt ganz gut. Jetzt bin ich auf ein weiteres Problem gestoßen. Ich möchte in der txt-Datei bestimmte Wörter ersetzen. Die Funktion dafür ist ja str_replace. Wenn ich also aus dem String ein Wort mit einem anderen ersetzen möchte, so klappt das einwandfrei. Wenn ich allerdings verschiedene Wörter ersetzen möchte, wie geht das? Also im String steht z.B.: Der PLATZALTER1 hat ein schönes PLATZHALTER2. Ich möchte jetzt platzhalter1 UND platzhalter2 ersetzen. Wie krieg ich das in eine anweisung? Zitieren
ZuVieL Geschrieben 30. November 2006 Geschrieben 30. November 2006 versuch es mal mit zwei arrays in etwa so $blab = array('schlecht', 'nicht gut'); $blub = array('toll', 'super'); $text = "Das Leben ist schlecht, aber irgendwie ist das nicht gut."; $ausgabe = str_replace($blab, $blub, $text); echo $ausgabe; [/PHP] Zitieren
etreu Geschrieben 30. November 2006 Geschrieben 30. November 2006 Such mal was in Richtung Template(-Engine). Mein Favorit hierfür ist Smarty : Template Engine. Damit kannst du Vorlagen mit Platzhaltern erstellen, die du dann einfach und bequem mit Werten belegen kannst. Warum also das Rad neu erfinden? Zitieren
ostpower Geschrieben 30. November 2006 Autor Geschrieben 30. November 2006 Also ich bin mal wieder einen Schritt weiter, jetzt hänge ich allerdings wieder, ich hoffe ihr könnt mir helfen, bisher waren eure Tipps immer ganz hilfreich, zumindest im mich in die richtige Richtung zu bringen. Also vom Grundverständnis: Ich erzeuge txt-Dateien dynamisch, d.h. der Textblock der in der Datei steht kann je nach Benutzereingabe öfters wiederholt werden, nur mit anderen Platzhalternamen. Das Problem ist jetzt, dass z.B. bei 3 Elementen nicht 3 Textblöcke in die Datei schreibt sondern immer nur die Letzte, weil er in der schleife durch die "w"-option die datei immer löscht und neu reinschreibt. Jetzt sagt ihr vielleicht, dann nehm doch "r" oder "a". Das geht aber nicht so einfach, da die schleife auf jeden fall einmal mit dem "w"-attribut durchlaufen werden muss, da ich mein voriges problem mit dem mehrfachen ersetzen so gelöst habe, indem ich die datei in 2 schritten modifiziert habe. Also geöffnet, ersten platzhalter mit eingabe ersetzt, gespeichert, dann wieder geöffnet, ausgelesen, 2. platzalter mit eingabe ersetzt, und die alten daten überschrieben. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.