fwrite Frage

ich würde einfach den ganzen Text einlesen,
dann mit strpos() die Position raussuchen, den String abschneiden, was anfügen und den rest dranhängen:

PHP:
$einf_ab = "dokument";                 //nach dem Wort einfügen
$einf        = "das wird eingefügt"; //das einfügen

$fh           = fopen("datei.txt", "r") or die ("Error opening datei.txt");
$content = fread($fh, filesize("datei.txt")); //datei in string einlesen
if( ($pos  = strpos($content, $einf_ab)) === FALSE )
               die("Das Wort nach dem eingefügt werden soll, nicht gefunden!");
//Den vorderen Teil abschneiden
 $first        = substr($content, 0, $pos-1);
//Content aus dem Vorderen Teil, dem neuen Teil und dem Rest von Content
// zusammenbauen
 $content = $first.$einf.substr($content,$pos);

ungetestet und geht nur beim ersten Auftauchen von Dokument. Wenn Dokument ein zweites mal auftaucht fügt er es trotzdem nach dem ersten mal ein.


Zu dem Fehler: Also ich hab mit dem Code auch keine Probleme, aber wahrscheinlich hast du noch ne geschweifte Klammer oder so offen.
 
Zuletzt bearbeitet:
Original geschrieben von Silvia
hmm das geht net...brauche das Script nämlich nicht nur für eine Datei...
Entscheide dich mal ;)
PHP:
$strings[0] = "das was dazwischen kommt"; //Das was du an der Stelle einfügen willst
$strings[1] = "2";
Die Strings die du anfügen willst
PHP:
$match[0] = "wo das hin soll :D"; //Der String hinter den $string kommt, bzw. der durch $string ersetzt werden soll
$match[1] = 2;
Der jeweils zu suchende String
PHP:
$file[0] = "xxx.xx";
$file[1] = "yyy.yy";
Die zu bearbeitenden Dateien, da du gesagt hast das du nicht nur eine Datei bearbeiten willst!
Was du machen würdest wäre, das du immer nur gleichzeitig eins bearbeitest, in der Menge aber viele ;)
PHP:
for ($i=0;$i<=count($strings);$i++) {
$file = file($file[$i]);
For-Schleife bis zur Anzahl der zu ersetzenden Strings
Speichere die Datei, die gerade ausgewählt ist, über das Array $file in ein Array.
PHP:
for ($i2=0;$i2<=count($file[$i]);$i2++) {
  if (count(explode($match,$file[$i2])) == 2) {
    $str .= $match[$i].$strings[$i]; //Hier eventuell das $match. löschen, wenn der Text einfach nur für $match eingesetzt werden soll
  }
  else {
    $str .= $file[$i2];
  }
}
Zeilen durchgehen und den Text anhängen, bzw. ersetzen
PHP:
$fp = fopen($file[$i],"w");
fwrite($fp,$str);
fclose($fp);
}
Neu erstellten Text in die Datei schreiben!

Das ist doch alles ganz einfach ;)
 
Für dich ist es vielleicht einfach...
und das wegen dem einen und mehreren datein hat nen leichten Grund:
Du hattest nach dem genauen Quelltext gefragt.
Aber ich kann dir keinen Quelltext dazu geben weil ich das nicht nur für eine DAtei brauche. Nun die Anfügung: Ich will aber immer nur eine Datei auf einmal bearbeiten. Also thanks ich probiers wieder gleich aus....
EDIT: Wozu brauche ich eigentlich match[1] und file[1] ?
 
sorry für Doppelpost aber es muss einfach sein...
bei mir kommt:
Warning: file(datei.txt): failed to open stream: No such file or directory in C:\Programme\xampp\htdocs\john.php on line 16

Warning: fwrite(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\john.php on line 26

Warning: fclose(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\john.php on line 27

Warning: fwrite(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\john.php on line 26

Warning: fclose(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\john.php on line 27

Warning: fwrite(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\john.php on line 26

Warning: fclose(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\john.php on line 27
-------------------------------------------------------
kannst du das einfach so machen...
schreiber-datei.php:
Inhalt der Datei

zu-bearbeitende-Datei.php:
Inhalt der Datei
-----------------------------------------------------------
das ich also praktisch den Quelltext nur rüberkopieren muss.....
 
Erstell mal einfach die .txt Datei (aus der ersten Fehlermeldung) im entsprechenden Ordner ;) .. die restlichen Fehlermeldungen hängen da wahrsch. mit dran :)
 
wenn er eh da steht ist das dein Problem, weil bei mir geht der Problemlos. Wenn er deine Datei nicht findet musst du halt mal danach suchen ob sie wirklich im gleichen Verzeichnis liegt.
 
Original geschrieben von Silvia
sorry für Doppelpost aber es muss einfach sein...
bei mir kommt:
Warning: file(datei.txt): failed to ...

Poste mal den Code, in der diese Zeile aufgerufen wird!
Nur z.B. ...
Wenn du willst, das dir geholfen wird, musst Du auch ein wenig kooperativer uns gegenüber handeln.

Ich stimme außerdem "Ben Ben" zu, meine Variante, so wie seine klappen...
 
Zurück