2024 PHP 日本大会

stream_get_line

(PHP 5, PHP 7, PHP 8)

stream_get_line从流资源中获取直到指定分隔符的行

描述

stream_get_line(资源 $stream, 整型 $length, 字符串 $ending = ""): 字符串|false

从给定的句柄中获取一行。

当读取了 length 个字节,或者找到了由 ending 指定的非空字符串(包含在返回值中),或者到达 EOF(以先到者为准)时,读取结束。

此函数与 fgets() 几乎相同,区别在于它允许使用除标准 \n、\r 和 \r\n 之外的其他行尾分隔符,并且返回分隔符本身。

参数

stream

有效的文件句柄。

length

从句柄中读取的最大字节数。不支持负值。零 (0) 表示默认套接字块大小,即 8192 字节。

ending

可选的字符串分隔符。

返回值

返回从 stream 指向的文件中读取的最多 length 个字节的字符串,或者在失败时返回 false

参见

  • fread() - 二进制安全的文件读取
  • fgets() - 从文件指针中获取一行
  • fgetc() - 从文件指针中获取一个字符
添加笔记

用户贡献笔记 1 条笔记

pk at ritm dot ru
15 年前
fgets 更快,但 stream_get_line 在 tcp 服务器脚本中更有用。

当 fgets 从套接字读取一些字节,并到达 EOF 时,它返回 bool(false),与 stream_get_line 相同

但是,如果远程客户端断开连接,并且服务器脚本尝试使用 fgets 函数读取一些数据,该函数将返回 bool(false),而 stream_get_line 将返回字符串(0) ""

因此,您可以使用 stream_get_line 检测远程客户端断开连接,而无法使用 fgets 检测
To Top