PHP: Чтение из файла. Получение информации построчно и целиком.
Чтение всего содержимого файлаАналогично созданию файлов, PHP реализует несколько подходов к чтению информации, хранящейся в них. Существует ряд функций, позволяющих получать как всё содержимое файла целиком, так и отдельные строки. Эти функции используются для решения различных задач. Если необходимо прочитать всё содержимое файла для дальнейшей обработки, используйте функцию file_get_contents(). Достаточно передать ей путь до файла в перовом параметре. Функция вернет результат в виде строки, которую можно поместить в переменную.
Также существует возможность получить всё содержимое файла в виде массива, где каждый элемент соответствует одной строке. За данный функционал в PHP отвечает функция file(). Как и в случае с file_get_contents(), ей достаточно передать всего один параметр — путь до файла.
Заметка! Нужно быть аккуратным при чтении файлов целиком. Если они содержат много данных, их сохранение в переменных или массивах может вызвать большой расход оперативной памяти. Всё зависит от поставленной задачи и программной логики. Возможно, построчное чтение будет лучшим вариантом. Построчное и посимвольное чтениеОбработка больших файлов требует оптимизации потребления оперативной памяти. PHP имеет функции, способные осуществлять построчное и символьное чтение. Они работают с файловыми дескрипторами, что требует написания немного большего количества программного кода, нежели при использовании file_get_contents() или file(). Однако это не является существенной проблемой. Для построчного чтения нужно использовать функцию fgets(). В первом параметре она принимает дескриптор файла. По умолчанию читается всё содержимое строки до символа её перевода. В случае достижения конца файла, функция вернет логическое значение false. Таким образом, построчное чтение можно организовать в виде цикла. Также допустимо указание второго необязательного параметра. Он должен быть задан в виде целочисленного значения, которое соответствует количеству получаемых байт. Если второй параметр указан явным образом, функция может вернуть результат, не дойдя до конца строки. При следующем вызове она продолжит чтение с предыдущего места. Если конец строки будет встречен раньше, чем прочитается указанное количество байт, результат будет возвращен сразу.
Некоторые задачи, решаемые в PHP, требуют последовательного получения каждого символа в файле. Для этого нужно использовать функцию fgetc(). Её применение схоже с предыдущей, за исключением того, что fgetc() принимает всего один параметр — дескриптор файла.
Работа с бинарными файлами и потоковыми соединениями делает функцию fgets() практически бесполезной, так как в них могут отсутствовать переводы строк. В PHP есть специальная функция fread(), позволяющая читать заданное количество байт из файлового дескриптора. Она имеет два параметра: дескриптор файла и количество читаемых байтов. При этом оба параметра являются обязательными, а переводы строк игнорируются.
|
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.