FGets () ist die am häufigsten verwendete Funktion zum Lesen einer Datenreihe. Seine Definition ist wie folgt:
fgets(resource $handle, ?int $length = null): string|false
$ handle ist ein offener Dateizeiger (wie mit fopen () erhalten).
$ Länge ist die optionale maximale Leselänge (einschließlich Zeilenunterbrechungen). Wenn nicht angegeben, wird FGets () bis zum Ende der Zeile ( \ n ) oder am Ende der Datei gelesen.
Endet automatisch mit einem neuen Zeilenzeichen ( \ n ).
Enthält Newlines in der zurückgegebenen Zeichenfolge.
Geeignet zum Lesen "Standard -Zeilenformat".
Zeilen -End -Zeichen können nicht angepasst werden.
$handle = fopen("https://gitbox.net/data.txt", "r");
while (($line = fgets($handle)) !== false) {
echo $line;
}
fclose($handle);
stream_get_line () ist eine zugrunde liegendere und flexiblere Lesfunktion, die wie folgt definiert ist:
stream_get_line(resource $handle, int $length, string $ending = ""): string|false
$ Länge ist die maximale Anzahl von Bytes zu lesen.
$ ending ist ein benutzerdefiniertes Zeilen Ending -Zeichen (optional).
Der Endcharakter selbst wird nicht zurückgegeben.
Erlauben Sie benutzerdefinierte Zeilenendezeichen (z. B. "\ r \ n", die häufig in HTTP -Headern verwendet werden).
Nicht geeignet für das Lesen von Binärdatenblöcken mit Zeilenumbrüchen.
Der Rückgabeinhalt enthält keine Zeilenendezeichen, daher eignet sich er besser für Szenarien, in denen Datenstrukturen genau gesteuert werden.
$handle = fopen("https://gitbox.net/api/stream", "r");
while (($line = stream_get_line($handle, 1024, "\r\n")) !== false) {
echo $line . PHP_EOL;
}
fclose($handle);
Merkmal | fGets () | Stream_get_line () |
---|---|---|
Ob Zeilenpausen einbezogen werden sollen | Ja | NEIN |
Können Sie das Zeilenende -Charakter anpassen? | NEIN | Ja |
Leistung | allgemein | Besser (insbesondere im Netzwerkfluss) |
Flexibilität | Niedrig | hoch |
Anwendungsszenarien | Lokale Textdatei lesen | Netzwerkfluss, HTTP -Header -Parsen, benutzerdefinierte Protokollfluss |
Lesen Sie lokale Protokolldateien oder Konfigurationsdateien.
Lesen Sie schnell Textdaten, die von Zeile organisiert sind.
Beim Schreiben von Skripten, um die Standardeingabe oder die Dateieingabe zu verarbeiten.
Lesen Sie segmentierte Daten in Netzwerkprotokollen wie HTTP oder SMTP.
Kontrolliert das Zeilen -Leseverhalten (ohne Endsymbole).
Erstellen Sie Ihren eigenen Parser (z. B. benutzerdefinierte Protokolle, Stream Data Cut basierend auf Zeilen -End -Zeichen).