Я новичок в PHP, и я не совсем уверен: в чем разница между функциями file()
, file_get_contents()
и fopen()
, и когда я должен использовать один над другим?
Разница между файлом, file_get_contents и fopen в PHP
Ответ 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