PHP Conference Japan 2024

stream_get_line

(PHP 5, PHP 7, PHP 8)

stream_get_line從串流資源中取得一行,直到指定的定界符

說明

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

從指定的控制代碼取得一行。

讀取操作會在讀取 length 位元組後結束,或者在找到 ending 指定的非空字串時結束(此字串*不*包含在返回值中),或者在遇到 EOF 時結束(以先發生的為準)。

此函數與 fgets() 幾乎相同,除了它允許使用標準 \n、\r 和 \r\n 以外的行尾分隔符號,並且*不*返回分隔符號本身。

參數

stream

一個有效的檔案控制代碼。

length

要從控制代碼讀取的最大位元組數。不支援負值。零 (0) 表示預設的 socket 區塊大小,即 8192 位元組。

ending

一個可選的字串分隔符號。

返回值

返回從 stream 指向的檔案中讀取的最多 length 位元組的字串,或者在失敗時返回 false

參見

  • fread() - 二進位制安全的檔案讀取
  • fgets() - 從檔案指標取得一行
  • fgetc() - 從檔案指標取得字元
新增註釋

使用者貢獻的註釋 1 則註釋

pk at ritm dot ru
15 年前
fgets 速度更快,但 stream_get_line 在 TCP 伺服器腳本中更有用。

當 fgets 從 socket 讀取一些位元組,到達 EOF 時,它會返回 bool(false),與 stream_get_line 相同

但是,如果遠端客戶端斷開連線,伺服器腳本嘗試使用 fgets 函數讀取一些數據,函數將返回 bool(false),而 stream_get_line 將返回 string(0) ""

因此,您可以使用 stream_get_line 檢測遠端客戶端斷線,而 fgets 則無法。
To Top