php чтение и запись файлов

Работа с файлами в PHP

Прочитав эту статью, вы узнаете, как создавать, получать доступ и управлять файлами на веб-сервере с помощью функции PHP fread и другими.

Открытие файла с помощью функции PHP fopen()

Файл может быть открыт в одном из следующих режимов:

РежимЧто он делает
RОткрывает файл только для чтения.
r+Открывает файл для чтения и записи.
WОткрывает файл только для записи и очищает содержимое файла. Если файл не существует, PHP попытается его создать.
w+Открывает файл для чтения и записи и очищает содержимое файла. Если файл не существует, PHP попытается его создать.
AОткрывает файл только для записи. Сохраняет содержимое файла, записывая его в конец файла. Если файл не существует, PHP попытается его создать.
a+Открывает файл для чтения и записи. Сохраняет содержимое файла, записывая его в конец файла. Если файл не существует, он будет создан. Можно использовать вместо PHP fread ()
XОткрывает файл только для записи. Возвращает значение FALSE и генерирует ошибку, если файл уже существует. Если файл не существует, PHP попытается его создать.
x+Открывает файл для чтения и записи; в противном случае имеет такое же поведение, как «x».

Если вы попытаетесь открыть файл, который не существует, PHP сгенерирует сообщение с предупреждением. Чтобы избежать этого, необходимо выполнять простую проверку, существует ли файл или нет, прежде чем пытаться получить к нему доступ. Это делается с помощью функции PHP file_exists() :

Закрытие файла

Чтение из файлов с помощью функции PHP fread()

Теперь вы знаете, как открывать и закрывать файлы. В следующем разделе вы узнаете, как читать данные из файла. PHP включает в себя сразу несколько функций для чтения данных из файла. За одну операцию можно считать, как один символ, так и весь файл.

Чтение фиксированного количества символов

Функция PHP fread() может использоваться для чтения заданного количества символов из файла. Базовый синтаксис функции:

Приведенный выше пример даст следующий результат:

Чтение всего содержимого файла

Функция fread() может использоваться в связке с функцией filesize() для полного считывания всего файла. filesize() возвращает размер файла в байтах. PHP fread пример:

Приведенный выше пример даст следующий результат:

Приведенный выше пример даст следующий результат:

Запись файлов с использованием функции PHP fwrite()

Функция fwrite() принимает два параметра: дескриптор файла и строку данных, которые должны быть записаны:

Переименование файлов с помощью функции PHP rename()

Удаление файлов с помощью функции PHP unlink()

Функции файловой системы PHP

В приведенной ниже таблице представлен обзор других полезных функций, которые можно использовать для динамического чтения и записи файлов ( альтернатива PHP fread() и другим функциям ):

Источник

Работа с файлами в PHP

Чтение файла: file_get_contents()

С помощью функции file_get_contents() можно получить содержимое файла:

Также мы можем получить html-код какой-либо страницы в интернете:

Но работает это далеко не для всех сайтов, у многих есть защита от такого примитивного парсинга.

Чтение файла: file()

Функция file() позволяет получить содержимое файла в виде массива. Разделителем элементов является символ переноса строки.

Создадим в корне сайта файл data.txt со следующим содержимым:

Теперь запустим скрипт index.php со следующим кодом:

При запуске этого скрипта мы получим в браузере:

Заметили, что у первых двух строк длина 7 символов вместо пяти? Это из-за того, что каждая строка содержит в конце символы переноса строки.

Чаще всего они нам не нужны, поэтому их можно убрать, передав вторым параметром константу FILE_IGNORE_NEW_LINES :

Теперь у всех строк будет по 5 символов.

Если нам необходимо получить только заполненные строки в файле и пропустить пустые, можно передать вторым параметром константу FILE_SKIP_EMPTY_LINES :

Разумеется, мы можем передать сразу две константы:

Создание файла и запись в файл: file_put_contents()

Функция file_put_contents() позволяет создать файл и заполнить его данными.

Чтобы не перезаписывать данные, а добавить их в конец файла, нужно передать третьим параметром константу FILE_APPEND :

Также вторым параметром можно передать массив:

Но этот вариант не очень удобен, поскольку все элементы массива запишутся подряд, без каких-либо разделителей. Чтобы их добавить, можно использовать функцию implode:

Создание папки или структуры папок

Создать папку можно с помощью функции mkdir() (make directory):

Кроме этого, второй параметр может игнорироваться при заданной umask (пользовательская маска (user mask), которая нужна для определения конечных прав доступа). В этом случае принудительно сменить права можно функцией chmod() :

Также мы можем создать структуру папок рекурсивно, для этого нужно третьим параметром передать true :

Но в этом случае права доступа будут заданы только для конечной папки. Для изменения прав у каждой из папок придётся указывать права вручную:

Проверка существования файла или папки

Проверить существование папки или файла можно с помощью функции file_exists() :

Если вы хотите проверить существование только папки или только файла, для этого есть специальные функции is_dir() и is_file() :

Проверка прав доступа

Функции is_readable() и is_writable() проверяют, есть ли у пользователя, от имени которого запущен PHP, права на чтение и запись файла или папки:

Копирование, перенос и удаление файла

Для удаления файлов используется функция unlink() :

Чтобы скопировать файл, используем функцию copy() :

Для переименования и переноса файла в другую папку используется функция rename() :

Работа с файлами с помощью fopen()

Но иногда возникают ситуации, когда нам необходимы более продвинутые инструменты. Например, если у нас есть большой текстовый файл и мы хотим читать его построчно, а не весь сразу, для экономии оперативной памяти.

Итак, открыть (или создать и открыть) файл можно с помощью функции fopen() :

Для построчного чтения файла используется функция fgets() :

Также в PHP существует множество других полезных функций, работающих с дескриптором файла. Почитать о них можно в документации.

Источник

Работа с файлами в php

Сразу хорошая новость, в последних версиях PHP научился автоматически преобразовывать символ / «слеш» в пути к файлу в нужную сторону в зависимости от вашей операционной системы (Windows или UNIX), более того, распознавая в пути к файлу строки http:// или ftp:// PHP понимает что на самом деле ему нужно установить сетевое соединение и работать с ним а не с локально расположенным файлом. При этом в рамках программы такой «сетевой» файл ничем не отличается от обычного и если у вас есть соответствующие права, то вы можете и читать и записывать http и ftp файлы.

Открытие файла

Т.к. PHP написан на языке C (читается как «Си»), в нём как и в Си, работа с файлами разделена на 3 этапа:

В начале файл открывается в нужном режиме чтения, при этом возвращается целое число, идентификатор открытого файла или дескриптор файла. Затем выполняются команды связанные с чтением или записью в файл, при этом эти команды ориентируются уже на полученный дескриптор файла а не на его имя. После выполнения нужных команд, файл лучше всего закрыть. Конечно PHP закроет все файлы автоматически после завершения сценария, однако если ваш файл долго обрабатывается, то может происходить утечка ресурсов.

Для открытия файла в PHP используется функция fopen(), общий вид функции:

Функция принимает 2 базовых параметра это

В зависимости от режима открытия файла вы можете выполнять те или иные операции над файлом, ниже приведена таблица с описанием режимов чтения:

РежимЧтениеЗаписьФайловый указательОчистка файлаСоздать, если файла нетОшибка, если файл есть
rДаНетВ началеНетНетНет
r+ДаДаВ началеНетНетНет
wНетДаВ началеДаДаНет
w+ДаДаВ началеДаДаНет
aНетДаВ концеНетДаНет
a+ДаДаВ концеНетДаНет
xНетДаВ началеНетДаДа
x+ДаДаВ началеНетДаДа
cНетДаВ началеНетДаНет
c+ДаДаВ началеНетДаНет

Рассмотрим пару примеров:

Запись и закрытие

Запись в файл осуществляется функцией fwrite() которая принимает 2 аргументам, указатель на файл и строку которую нужно записать в файл. Пример:

В результате выполнения кода, будет создан файл (если его нет) test.txt и запишется строка, в моём случае:

Как видите после записи я вызываю функцию fclose() куда передаю дескриптор файла для его закрытия. Давайте рассмотрим несколько практических задач которые могут встретиться вам в реальных проектах.

Логирование данных

Одной из частых задач связанных с чтением/записью фалов, является логирование данных о работе веб-сайта. Логировать можно всё что угодно, ошибки, результаты запросов к БД, активность пользователей и т.п.

В результате обращения к этому скрипту, в файл log.txt попадут следующие данные:

Обратите внимание на двойные кавычки вместо одинарных. Это нужно для того, чтобы PHP корретно интерпретировал сочетание «\n» как символ переноса строки. Функцию logFile() можно улучшать до бесконечности, добавляя различные дополнительные данные из сессии пользователя, данных запроса, данных о сервере и т.п.

Парсинг

Ещё дна частая задача в веб-программировании, это парсинг файлов. Иногда вам нужно слить сайт конкурента чтобы проанализировать цены на похожие товары, загрузить данные с csv документа в базу данных, проанализировать xml карты сайта и т.д. Давайте рассмотрим загрузку данных их csv документа.

‘; > //Закрываем файл fclose($csv);

Я создал csv сохранив его в кодировке UTF-8, разделитель поля — ; разделитель текста — «. Обратите внимание что в функции fgetcsv() третий параметр (разделитель) должен совпадать с тем, что вы указывали при сохранении csv.

В результате выполнения скрипта, получаю содержимое csv вот в таком виде:

Более подробно вопросы парсинга данных (как excel документов так и html страниц я рассмотрю в отдельных прикладных статьях). Желаю удачи в изучении php!

Источник

Учимся работать с файлами в PHP

В данном уроке мы рассмотрим несколько способов работы с файлами в PHP, а также поговорим о преимуществах и недостатках каждого из них.

Построчное чтение из файла

Для начала давайте научимся читать файлы. Давайте создадим текстовый файл file.txt и запишем в него следующий текст:

Давайте теперь считаем его с помощью программы на языке php. Создайте файл files.php и запишите в него следующий код:

Если вы сейчас запустите этот скрипт, то увидите на экране четверостишие из файла.

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Давайте теперь разберём по шагам нашу программу.

Как вы понимаете, для чтения не очень удобно использовать цикл for с указанием конкретного числа строк, которые необходимо считать. Для этого можно использовать функцию feof – она возвращает true, если достигнут конец файла, и false – если нет.

На вход в качестве аргумента она принимает ресурс файла. Программа, переписанная с использованием функции feof будет выглядеть следующим образом:

Цикл будет выполняться до тех пор, пока не достигнут конец файла. При этом функция fgets каждый раз сдвигает курсор на следующую строку. Как только курсор достигнет конца файла, цикл завершится. Таким образом мы не привязаны к числу строк и можем читать файл не задумываясь об этом.

Построчная запись в файл

Теперь запишем данные в файл. Для того чтобы открыть файл для записи используется та же функция fopen, только в качестве режима работы указывается ‘w’ (от write).

А для записи в файл строки используется функция fputs(). Первым аргументом указывается ресурс, а вторым — строка, которую необходимо записать в файл. Давайте в качестве примера напишем программу, которая запишет в файл file2.txt числа от 1 до 100.

Константа PHP_EOL содержит в себе символ переноса строки. При этом для разных операционных систем (Windows или Unix-подобных) эти символы будут разными.

Дозаписываем в конец файла

При этом если сейчас запустить программу снова, то старые данные в файле file2.txt перезапишутся новыми. Для того, чтобы сохранить содержимое файла и дозаписать данные в конец, нужно использовать режим работы с файлом “a” (от append – присоединять, добавлять).

Если мы запустим этот скипт дважды, то в файле file3.txt будет две строки “abc”.

Читаем файл целиком

В PHP также имеется возможность прочитать весь файл за раз. Для этого используется функция file_get_contents().

Данный код выведет всё то же четверостишие, только без переноса строк.

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Так произошло потому, что в самом первом примере мы добавляли тег
после каждой прочитанной строки. Если же мы откроем исходный код страницы, то увидим, что на самом деле переносы строк в исходном коде сохранены.

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Запись в файл данных целиком

Для того, чтобы записать в файл большой объем данных за раз — сразу несколько строк, можно воспользоваться функцией file_put_contents.

Если снова запустить этот код, файл перезапишется. Для того, чтобы дополнить файл у этой функции есть третий аргумент — режим работы с файлом. Для дозаписи в конец файла следует использовать константу FILE_APPEND.

Какой способ выбрать

Данные способы отличаются в первую очередь тем, что когда мы считываем файл целиком, или записываем в него много данных за раз, нам приходится хранить в оперативной памяти больше данных, чем если бы мы работали по отдельности с каждой строкой. Если данных не слишком много, об этом можно не беспокоиться. Однако, если вы читаете файл размером 10 Гб, а на компьютере, на котором выполняется скрипт, всего 4Гб оперативной памяти, то его получится считать только построчно. При попытке загрузить его целиком программа упадёт с ошибкой о нехватке памяти.

Источник

Работа с файлами на php: открытие, запись, чтение

На самом деле, чем открыть php файл, не является большой проблемой. Бывает труднее открыть бутылку пива, когда находишься посреди леса. Но так думают лишь заядлые программисты. А для новичков поведаем обо всех возможностях php для работы с файлами:

Файлы php

Файлы с расширением php содержат в себе код написанный, на одноименном языке программирования. В отличие от других языков, php является серверным языком программирования. То есть он выполняется на стороне сервера. Поэтому для отладки его кода на клиентской машине должен быть установлен локальный сервер.

Для работы с файлами php используются специальные приложения – программные редакторы. Наиболее распространенными из них являются:

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Открытие и закрытие файлов

В php все операции с файлами осуществляются в несколько этапов:

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Чтение и запись файлов

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Для работы с функцией требуется открытие и закрытие файла. Пример:

Результат аналогичен предыдущему.

Функции для работы с файлами в php позволяют считывать содержимое построчно и посимвольно:

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Для записи текстовых данных в файл существует две идентичные функции:

Функции записывают в файл int file строку string string указанной длины int length ( необязательный аргумент ). Пример:

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Создание и удаление файлов

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Получение информации о файле

Для получения информации о файлах в php используется целый ряд функций:

php чтение и запись файлов. Смотреть фото php чтение и запись файлов. Смотреть картинку php чтение и запись файлов. Картинка про php чтение и запись файлов. Фото php чтение и запись файлов

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *