Я новичок в 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