Fwrite () zeile angeben

Hallo
kann man bei der funktion fwrite() die Zeile angeben in der Text geschrieben werden soll?
Und wenn ja wie?
mfg
Simon

fseek
Naja - Du musst eben die Position durch suchen ermitteln…
Notfalls mit explode auf \n die Zeilen trennen und nach dem xten Element suchen und dann die längen aller anderen explodes (plus Zeilenumbruch) zusammenzählen…
(ungetestet)

hier die Doku zu fseek

fseek
fseek – Positioniert den Dateizeiger
Beschreibung
int fseek ( int fp, int offset [, int whence])

Setzt den Dateizeiger einer mit fp angegebenen Datei auf eine neue Position. Diese neue Position, angegeben in Bytes vom Begin der Datei an, wird definiert durch Hinzufügen von offset zu der Position spezifiziert durch whence, deren Werte wie folgt definiert sind:

SEEK_SET - Setzt Position gleich offset bytes.
SEEK_CUR - Setzt Position auf die aktuelle Stelle plus offset.
SEEK_END - Setzt die Position ans Ende der Datei plus offset. (Um zu einer Position vor EOF zu gelangen, übergeben Sie in offset einen negativen Wert.)

Wenn whence nicht angegeben wurde, wird SEEK_SET angenommen.

Bei Erfolg wird ‚0‘ zurückgegeben, andernfalls ‚-1‘. Beachten Sie, dass die Überschreitung des Dateiendes (EOF) nicht als Fehler bewertet wird.

Diese Funktion sollte nicht auf Dateizeiger angewandt werden, die durch die Verwendung von „http://“ oder „ftp://“ bei der Funktion fopen() erhalten wurden.

Aja,
Ich versteh das aber noch net so ganz.

Hier ist mald er script mit dem ich die sachen schreibe.
Wie musss ich jetzt hier das einbauen?

$isoutput = '
Zu speichernder Text
';


$File = "Test.php";
$fh = fopen($File, 'w') or die("can't open file");
$stringData = $isoutput;
fwrite($fh, $stringData);
fclose($fh);

mfg
Simon

Halo Simon,

Hallo
kann man bei der funktion fwrite() die Zeile angeben in der
Text geschrieben werden soll?

Nein.

Mit fseek kann man zwar den Dateizeiger bewegen, aber nur an eine konkrete Position (123. Byte z.B., nicht auf eine bestimmte Zeile). Ein fwrite danach überschreibt ab dieser Stelle, aber auch wieder byteweise, d.h. ist die neue Zeile kürzer, bleibt „der Rest“ der alten Zeile stehen, ist sie länger, wird die Folgezeile mit überschrieben.

Und wenn ja wie?

Lese die Datei in ein Array ($array=file(„filename“)), ändere/füge dort dann ein ($array[2.5]=„bla“), wie du es brauchst, und schreibe das Ganze dann wieder raus (ksort($array); file_put_contents(„filename“, implode("\n", array_values($array))):wink:.

Alexander