fseek

(PHP 4, PHP 5, PHP 7, PHP 8)

fseekPositioniert den Dateizeiger

Beschreibung

fseek(resource $stream, int $offset, int $whence = SEEK_SET): int

Setzt den Dateizeiger einer mit stream angegebenen Datei auf eine neue Position. Diese neue Position, angegeben in Bytes vom Beginn der Datei an, wird definiert durch Hinzufügen von offset zu der Position spezifiziert durch whence.

Im Allgemeinen ist es erlaubt hinter das Ende der Datei (EOF) zu positionieren; wenn dann Daten geschrieben werden, ergeben Leseoperation in einer unbeschriebenen Region zwischen dem EOF und der gesetzten Position Bytes mit dem Wert 0. Allerdings unterstützen bestimmte Streams dieses Verhalten möglicherweise nicht, besonders wenn sie einen unterliegenden Speicher fester Größe haben.

Parameter-Liste

stream

Eine Dateisystemressource (resource), wie sie in der Regel von fopen() zurückgegeben wird.

offset

Der Offset.

Um zu einer Position vor EOF zu gelangen, muss in offset ein negativer Wert übergeben werden und whence auf SEEK_END gesetzt werden.

whence

whence Werte sind:

  • SEEK_SET - Setzt Position gleich offset Bytes vom Anfang der Datei.
  • SEEK_CUR - Setzt Position auf die aktuelle Stelle plus offset Bytes.
  • SEEK_END - Setzt die Position ans Ende der Datei plus offset Bytes.

Rückgabewerte

Bei Erfolg wird 0 zurückgegeben, andernfalls -1.

Warnung

Diese Funktion wurde erstellt, um die gleichnamige Funktion der Sprache C nachzuahmen. Es ist wichtig, auf die Rückgabewerte zu achten, da sie sich dem unterscheiden, was man in PHP erwarten würde.

Beispiele

Beispiel #1 fseek()-Beispiel

<?php

$fp
= fopen('somefile.txt', 'r');

// lies einige Daten
$data = fgets($fp, 4096);

// gehe zurück an den Anfang der Datei
// das selbe wie rewind($fp);
fseek($fp, 0);

?>

Anmerkungen

Hinweis:

Wenn Sie die Datei im Anfügemodus (a oder a+) geöffnet haben, werden jegliche Daten, die sie in die Datei schreiben, immer angehängt, unabhängig vom Dateizeiger, und das Ergebnis des Aufrufs von seek() ist undefiniert.

Hinweis:

Nicht alle Streams unterstützen Positionierung. Für jene, die Positionierung nicht unterstützen, kann Vorwärtspositionierung durch Lesen und Verwerfen von Daten erreicht werden; andere Formen der Positionierung schlagen fehl.

Siehe auch

  • ftell() - Ermittelt die aktuelle Position des Dateizeigers
  • rewind() - Setzt die Position eines Dateizeigers auf den Anfang