Разница между файлом, file_get_contents и fopen в PHP

Я новичок в PHP, и я не совсем уверен: в чем разница между функциями file(), file_get_contents() и fopen(), и когда я должен использовать один над другим?

Ответ 1

Первые два, file и file_get_contents очень похожи. Оба читают весь файл, но file считывает файл в массив, а file_get_contents считывает его в строку. Массив, возвращаемый file, будет разделен символом новой строки, но каждый элемент будет по-прежнему содержать завершающую новую строку, поэтому вам все равно нужно следить за этим.

Функция fopen делает что-то совершенно другое - она ​​открывает файловый дескриптор, который функционирует как поток для чтения или записи файла. Это намного более низкоуровневая функция, простая оболочка вокруг функции C fopen, и просто вызов fopen ничего не сделает, кроме как открыть поток.

Как только вы откроете дескриптор файла, вы можете использовать другие функции, такие как fread и fwrite, чтобы манипулировать данными, к которым относится дескриптор, и как только вы закончите, вам нужно будет закрыть поток, используя fclose. Это дает вам более точный контроль над файлом, который вы читаете, и если вам нужны необработанные двоичные данные, вам может понадобиться их использовать, но обычно вы можете придерживаться функций более высокого уровня.

Итак, чтобы повторить:

  • file - считывает содержимое всего файла в массив строк.
  • file_get_contents - считывает содержимое всего файла в строку.
  • fopen - открывает дескриптор файла, который можно манипулировать с помощью других функций библиотеки, но не выполняет чтение или запись.

Ответ 2

file - Считывает весь файл в массив
file_get_contents - Считывает весь файл в строку
fopen - Открывает файл или URL