ConFoo 2025

stream_get_line

(PHP 5, PHP 7, PHP 8)

stream_get_lineПолучает строку из потокового ресурса до указанного разделителя

Описание

stream_get_line(resource $stream, int $length, string $ending = ""): string|false

Получает строку из указанного дескриптора.

Чтение заканчивается, когда прочитано length количество байт и когда найдена непустая строка, указанная в параметре ending (она не включается в возвращаемое значение) или достигнут EOF (смотря что произойдёт раньше).

Функция очень похожа на функцию fgets(), кроме того, что она позволяет использовать разделители строк, отличающиеся от стандартных \n, \r, и \r\n, и не возвращает сам разделитель.

Список параметров

stream

Допустимый дескриптор файла.

length

Максимальное количество байтов для чтения из дескриптора. Отрицательные значения не поддерживаются. Ноль (0) означает размер блока сокета по умолчанию, т.е. 8192 байта.

ending

Необязательный разделитель строки.

Возвращаемые значения

Возвращает строку длиной до length байт, прочитанную из файла указанного параметром stream или false, если возникла ошибка.

Смотрите также

  • fread() - Читает файл в бинарно-безопасном режиме: как последовательность байтов
  • fgets() - Получает строку из указателя на файл
  • fgetc() - Считывает символ из файла
Добавить

Примечания пользователей 1 note

up
12
pk at ritm dot ru
15 years ago
fgets is faster but stream_get_line is more useful in a tcp server scripts.

when fgets reads some bytes from socket, where EOF is reached, it returns bool(false) same as stream_get_line

BUT if remote client drops connection, and server script will try to read some data with function fgets, function will return bool(false), and stream_get_line will return string(0) ""

so you can detect remote client disconnection with stream_get_line, and cannot with fgets
To Top