• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Suchen und ersetzen in einer Datei über Formulareingaben

Status
Für weitere Antworten geschlossen.

ingoS

Aktives Mitglied
Meine PHP-Kenntnisse sind leider ziemlich beschränkt, daher hänge ich bei folgender Aufgabe fest:
Ich habe eine Datei, in der ein wenig Text steht (events.php). Diese Datei möchte ich gerne nach einer in ein Formular eingegebenen Zeichenfolge durchsuchen und die komplette Zeichenfolge durch eine neue, ebenfalls im Formular eingegebene Zeichenfolge ersetzen.
Das Formular sieht folgendermaßen aus:
Code:
<form action="ersetzer.php" method="post">
<textarea name="original">
</textarea>
<textarea name="neu">
</textarea>
<input type="submit" value="&Auml;ndern">
</form>

Ich versuche es nun mit folgendem PHP-Code (ersetzer.php):
PHP:
<?php
$inhalt = $_POST["original"];
$original = $_POST["original"];
$neu = $_POST["neu"];

$datei1 = fopen("events.php","r+");
$dateiinhalt = file_get_contents("events.php");
$pos = strpos($dateiinhalt, $original);
$inhalt = ereg_replace($original, $neu, $datei1);
fseek($datei1, $pos);
fwrite($datei1,$inhalt);
fclose($datei1);
?>
Dieser sorgt bereits dafür, dass der Dateizeiger an die richtige Stelle springt und den Text ersetzt, nur ersetzt er ihn nicht durch das, was im Formular eingegeben wurde, sondern grundsätzlich durch "Resource id #3". Ich habe bereits folgendes gefunden: quakenet:#php FAQ Nun verstehe ich aber nicht, was genau ich (mit fgets?) anstellen muss, um nicht die Resource id, sondern die eigentliche Resource zu schreiben.

Weiterhin wüsste ich gerne, ob ich dafür sorgen kann, dass bei längerem neuen Text nicht noch der Rest nach der gesuchten alten Zeichenfolge ersetzt wird.
 
Werbung:
Das replace musst du auf
PHP:
$dateiinhalt
machen und nicht auf
PHP:
$datei1
Wie jetzt aber nur der erste Treffer geändert wird muss ich noch suchen.
 
Das replace musst du auf
PHP:
$dateiinhalt
machen und nicht auf
PHP:
$datei1

Dankeschön; ich habe mittlerweile noch ein wenig rumprobiert und dabei genau die Änderung vorgenommen; das scheint schon mal zu funktionieren. :)

Ist es aber nicht trotzdem so, dass noch Text direkt nach dem Gefundenen ersetzt wird, wenn das Ersetzte kürzer ist als das Neue? Das ist nämlich auch ein Problem...
 
Zuletzt bearbeitet:
Werbung:
Bei mir wird nur die gesuchte Zeichenkette ersetzt, alles andere wird verschoben, wenn die Wörter nicht gleich lang sind.

Da wird nichts anderes ersetzt.

Ist das bei dir anders? Dann gib mal bitte ein Beispiel.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben