fwrite Frage

Tropical

Mitglied
Wie im Themennamen schon erwähnt ich habe ein Problem mit der function fwrite(). Ich will mit fwrite(a) also nur Datei anfügen bzw. wenn es die Datei nciht gibt wird sie angelegt. Nur schreibe ich dann am Ende der Datei. Ich will aber das ich nach einem bestimmten Text etwas schreibe. Geht das?

Hier ein Beispiel:(Inhalt der zu bearbeiteten Datei)
dateidateidatei dateidatei datei datei datei
dateidateidatei dateidatei datei datei datei
dateidateidatei dateidatei datei datei datei
dateidateidatei dateidatei datei datei datei
dokument
dateidateidatei dateidatei datei datei datei
dateidateidatei dateidatei datei datei datei
dateidateidatei dateidatei datei datei datei
-------------------------------------------------
und ich will das er nach "dokument" zum schreiben beginnt...
 
Was du machen müsstest ist:
- datei auslesen
- stelle raussuchen
- dazwishchen hängen was du willst
- wieder ins file schreiben

Theoretisch (ungetestet):
PHP:
<?
$string = "das was dazwischen kommt";
$match = "wo das hin soll :D";
$file = file("xxx.xx");
for ($i=0;$i<=count($file);$i++) {
  if (count(explode($match,$file[$i])) == 2) {
    $str .= $match.$string;
  }
  else {
    $str .= $file[$i];
  }
}
$fp = fopen("xxx.xx","w");
fwrite($fp,$str);
fclose($fp);
?>
So sollte es gehen :)
 
Hallo,

was hälst du davon die Datei in ein String einzulesen, dann per explode() an "Dokument" zu trennen, und dann ganz einfach wieder alles zusammensetzt und per fwrite in die Datei schreibst?

Ist zumindest die erste Variante der vielen die mir einfielen ... man könnte auch mit strpos etc. machen, aber das aufwändiger
 
PHP:
<?
$string = "das was dazwischen kommt";
$match = "wo das hin soll :D";
$file = file("xxx.xx");
for ($i=0;$i<=count($file);$i++) {
  if (count(explode($match,$file[$i])) == 2) {
    $str .= $match.$string;
  }
  else {
    $str .= $file[$i];
  }
}
$fp = fopen("xxx.xx","w");
fwrite($fp,$str);
fclose($fp);
?>
Er müsste dann bei "$str .= $match.$string;" einfach das "$match." wegnehmen, ich denke darauf wäre er auch selbst gekommen ;)
 
meinst du mit "wo das hin soll" den Text nach welchem dann geschrieben werden soll?
EDIT: Erster Fehler:
Parse error: parse error, unexpected T_ECHO in /srv/www/htdocs/web132/html/schreiben.php on line 4
 
Zuletzt bearbeitet:
hmm das geht net...brauche das Script nämlich nicht nur für eine Datei...
bau halt das Script mit irgendwelchen Daten....
und gib dann darunter an was davon variabel ist...
 
(wieder ungetestet ;))
PHP:
<?
$strings[0] = "das was dazwischen kommt"; //Das was du an der Stelle einfügen willst
$strings[1] = "2";
$match[0] = "wo das hin soll :D"; //Der String hinter den $string kommt, bzw. der durch $string ersetzt werden soll
$match[1] = 2;
$file[0] = "xxx.xx";
$file[1] = "yyy.yy";
for ($i=0;$i<=count($strings);$i++) {
$file = file($file[$i]);
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];
  }
}
$fp = fopen("xxx.xx","w");
fwrite($fp,$str);
fclose($fp);
}
?>
Also ich hab das grade nochmal getestet und es klappt super!
Villeicht hast dus falsch benutzt, ich hab mal Kommentare dran geschrieben...
 
Zuletzt bearbeitet:
ich versuchs mal danke enstweilen...
EDIT: Bei mir kommt:
Parse error: parse error, unexpected $end in C:\Programme\xampp\htdocs\schreiben.php on line 21
und wozu brauche ich yyy.yy? Ich will ja nur eine Datei auf einmal bearbeiten...
 
Zuletzt bearbeitet:
Zurück