PHP中file、file_get_contents和fopen之间的区别

36

我刚接触PHP,不太清楚file()file_get_contents()fopen()函数之间有什么区别,以及何时应该使用其中的某个函数?

2个回答

99

前两者,filefile_get_contents十分相似。它们都读取整个文件,但是file将文件读入一个数组中,而file_get_contents将其读入一个字符串中。由file返回的数组将被换行符分隔,但每个元素仍然带有终止符号,因此您仍然需要注意这一点。

fopen函数完全不同——它打开一个文件描述符,该描述符作为流来读取或写入文件。它是一个更低级别的函数,只是C语言fopen函数的简单包装器,仅调用fopen将不做任何事情除了打开一个流。

一旦您打开了文件句柄,就可以使用其他函数,例如freadfwrite来操作句柄引用的数据,完成后,您将需要使用fclose关闭流。这些函数使您对所读取的文件具有更好的控制力,如果需要原始二进制数据,则可能需要使用它们,但通常您可以使用更高级别的功能。

因此,概括一下:

  • file — 将整个文件内容读取到一个行数组中。
  • file_get_contents — 将整个文件内容读取到一个字符串中。
  • fopen — 打开文件句柄,可以使用其他库函数来操作,但本身不进行读取或写入。

1
是否有类似于file_write_contents的高级函数用于写入文件? - Hassaan
1
@M.Hassaan file_put_contents($path, $content); => 使用file_put_contents函数将$content内容写入$path文件中。 - KsaR

14

我已经阅读了它,但不确定是否正确。我不知道哪个函数在逐行读取解析器的行? - c00L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接