Как в php прочитать значение из файла. Работа с файлами в PHP

Очень часто при работе на сервере требуется читать, сохранять, добавлять и удалять данные из файла. Для этого в языке PHP существуют специальные функции.
Прежде, чем начать работать с файлом, его нужно открыть с помощью функции fopen(file_name, mode), где file_name – имя файла, который нужно открыть для работы, а mode – определяет режим открытия файла. Возможны следующие варианты mode:

  • r – только для чтения;
  • r+ - прочитать и записать в начало файла;
  • w – файл открывается для записи;
  • w+ - записать и прочитать. Существующее содержимое будет стерто;
  • a – файл открывается для дополнения данными;
  • a+ - расширенный режим, при котором файл открывается для дополнения и чтения.
    Функция fopen возвращает указатель на открываемый файл.
    Пример. $new_file=fopen(“name_file”,”w”); // открываем файл «name_file» для записи, //а в переменную new_file заносим указатель на открываемый файл.

    Запись в файл php

    После того, как мы открыли файл, можно записать в него данные с помощью функции fwrite(ref_file,data), где ref_file – указатель на открытый файл, возвращенный функцией fopen, data – записываемые данные. fwrite($new_file,”Первая строка файла ”); В результате выполнения приведенного кода в файл по ссылке $new_file будет записано: «Первая строка файла».

    Чтение файла php

    Открытый файл можно прочитать с помощью функции file(file_name), где file_name – имя файла. Функция возвращает массив, элементами которого являются строки файла, а индексом - номер строки.
    Нумерация идет с 0. $data=file(“file_name”); В этой строчке кода в переменную data записывается массив, сформированный при чтении файла file_name.
    После завершения всех действий файл необходимо закрыть функцией fclose(ref_file), где ref_file – ссылка на закрываемый файл. fclose($new_file); Файл, имеющий ссылку, записанную в переменную new_file, будет закрыт. Рассмотрим простой пример создания файла и записи в него данных на примере html-документа. Следующий код приведен с комментариями к каждой строке. Пример записи в файл //конец php-скрипта

     Если этот сайт оказался вам полезен, вы можете помочь в его развитии, поставив на свой сайт.

  • file_put_contents — Пишет строку в файл

    Описание

    Int file_put_contents (string $filename , mixed $data [, int $flags = 0 [, resource $context ]])

    Функция идентична последовательным успешным вызовам функций fopen() , fwrite() и fclose() .

    Если filename не существует, файл будет создан. Иначе, существующий файл будет перезаписан, за исключением случая, если указан флаг FILE_APPEND .

    Список параметров

    Путь к записываемому файлу.

    Записываемые данные. Может быть string , array или ресурсом stream .

    Если data является ресурсом stream , оставшийся буфер этого потока будет скопирован в указанный файл. Это похоже на использование функции stream_copy_to_stream() .

    Также вы можете передать одномерный массив в качестве параметра data . Это будет эквивалентно вызову file_put_contents($filename, implode("", $array)) .

    Значением параметра flags может быть любая комбинация следующих флагов, соединенных бинарным оператором ИЛИ (| ).

    context

    Корректный ресурс контекста, созданный с помощью функции stream_context_create() .

    Возвращаемые значения

    Функция возвращает количество записанных байт в файл, или FALSE в случае ошибки.

    Внимание

    Эта функция может возвращать как boolean FALSE , так и не-boolean значение, которое приводится к FALSE . За более подробной информацией обратитесь к разделу Булев тип . Используйте оператор === для проверки значения, возвращаемого этой функцией.

    Примеры

    Пример #1 Пример простого использования

    $file = "people.txt" ;
    // Открываем файл для получения существующего содержимого
    $current = file_get_contents ($file );
    // Добавляем нового человека в файл
    $current .= "John Smith\n" ;
    // Пишем содержимое обратно в файл
    file_put_contents ($file , $current );
    ?>

    Пример #2 Использование флагов

    $file = "people.txt" ;
    // Новый человек, которого нужно добавить в файл
    $person = "John Smith\n" ;
    // Пишем содержимое в файл,
    // используя флаг FILE_APPEND flag для дописывания содержимого в конец файла
    // и флаг LOCK_EX для предотвращения записи данного файла кем-нибудь другим в данное время
    file_put_contents ($file , $person , FILE_APPEND | LOCK_EX );
    ?>

    Базы данных MySQL и Access все чаще становятся общедоступными средствами хранения данных. Но в начале 1990-х была популярна работа с файлами в PHP, сохранение записей в форматированных текстовых файлах в формате CSV, разделенных новыми строками.

    Основные принципы работы

    Базы данных удобны, но каждый разработчик должен по крайней мере иметь некоторые базовые знания о том, как читать и писать файлы. Возможно, многие задумаются над вопросом: «Почему мне нужно это знать? Если я использую файлы, они написаны в XML, и я просто применяю синтаксический анализатор».

    Итак, вот несколько причин, по которым могут понадобиться файлы:

    1. Чтобы переместить двоичные данные (например, файлы изображений) в базу данных BLOB (двоичные большие объекты).
    2. Импорт данных (например, адресов электронной почты), экспортированных из устаревшей базы данных или приложения.
    3. Чтобы из базы данных экспортировать информацию в текстовый файл для обработки в автономном режиме.

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

    Удобно использовать и встроенные функции, которые автоматически совершают открытие и закрытии. Они доступны в PHP5.Также следует ознакомиться с атрибутами файлов, то есть с его свойствами.

    Они могут рассказать:

    • о размере;
    • выдать информацию о том, когда последний раз к нему обращались;
    • рассказать о владельце и т. д.

    Лучше всего выучить все основные атрибуты для работы с файлами в PHP. Это во многом облегчит работу.

    История файлов

    Может понадобится узнать время последнего редактирования файла. В этом случае на помощь приходят функции: fileatime(), filemtime() и filectime().

    "; echo $file . " имел последнее изменение i-узла " . date($formatDate, $timeM) . ".
    "; echo $file . " был изменен " . date($formatDate, $timeC) . ".";

    Здесь код извлекает временную метку последнего доступа и отображает ее:

    • C: Windowsfile.ini был просмотрен 19 сен 2018 4:34 вечера.
    • C: Windowsfile.ini был изменен Пт 8 окт 2018 2:03 утра.
    • C: Windowsfil.ini был изменен в Вт 16 дек 2017 4:34.

    Функция filectime() показывает время изменения разной информации, связанной с файлом (например, права доступа), а filemtime() - изменения самого файла.

    Функция date() использовалась для форматирования временной метки Unix, возвращаемой file*time() функциями.

    Файл или нет?

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

    "; echo $file . (is_dir($file) ? " " : " не") . " каталог.";

    Вывод кода примера:

    • C: Windowsfile.ini файл.
    • C: Windowsfile.ini не каталог.

    Таким образом можно избежать ошибок и не открыть по неосторожности «не файл». В PHP работа с файлами и каталогами аналогична.

    Разрешения для файлов

    Перед работой с файлом можно проверить, является ли он доступным для чтения или записи. Для этого нужно использовать функции is_writable() и is_readable().

    "; echo $file . (is_writable($file) ? " " : " не") . " записывается.";

    Эти функции возвращают логическое значение и объясняют, может ли операция быть выполнена в файле.

    Код выведет следующие значения на экран:

    • C: Windowsfile.ini читается.
    • C: Windowsfile.ini не записывается.

    Используя тернарный оператор, можно указать, доступен файл или нет.

    Размер файла

    Чтобы узнать размер файла, нужно использовать функцию filesize(). Он будет показан в байтах.

    Функция выведет на экран следующее:

    • C: Windowsfile.ini имеет размер 510 байт.

    Использование файла в системе Windows здесь подчеркивает один нюанс. Обратная косая черта имеет особое значение в качестве символа escape. Нужно будет избегать этого, добавив еще одну обратную косую черту.

    Если файл еще не создан, функция filesize() укажет на False и ошибку. Поэтому вначале проверяют файл на существование нужной команды file_exists().

    Проверку file_exists() нужно включать практически всегда для безопасности.

    Чтение файлов

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

    Функции для работы с файлами PHP облегчают задачу. В данном случае понадобится file_get_contents(). Она будет считывать все содержимое файла в переменную без необходимости открывать или закрывать файл самостоятельно. Это удобно, когда объем записи относительно невелик, так как сразу считывать 1 ГБ данных в архив не всегда рационально в PHP. Работа с «.ini»-файлами и функцией file_get_contents() показана ниже.

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

    Для работы с функцией fopen() необходимы два аргумента:

    • файл, который нужно открыть;
    • режим, используемый в этом случае является «r» для чтения.

    Функция возвращает дескриптор или поток в файл, который хранится в переменной $file1. Ее нужно использовать во всех последующих командах при работе с файлом.

    С целью чтения из открытого файла по одной строке за раз, использовать можно функцию fgets().

    ";} while (!feof($file1)); fclose($file1);

    Использование do-while-цикла является хорошим выбором, чтобы узнать заранее, сколько строк в файле. Функция feof() проверяет, достиг ли файл завершения, а цикл продолжается до тех пор, пока не будет достигнут конец условия файла. После окончания чтения используется функция fclose() для закрытия документа.

    Запись файлов

    Два часто используемых режима при записи в файл с использованием функции fwrite(): «w» и «a». «W» означает, что нужно записать в документ, но он предварительно удалит любое содержимое, «a» - добавление новых данные к тому, что уже существует в файле. Нужно быть уверенным, что используется правильный вариант.

    В следующем примере будет использоваться режим «a» для записи.

    Сначала имя файла назначается переменной, затем он открывается в режиме «a» для добавления. Данные, которые должны быть записаны, назначаются переменной $output и fwrite(), а информация добавляется в файл. Процесс повторяется, чтобы добавить еще одну строку, затем документ закрывается с использованием fclose().

    Предварительно определенная константа PHP_EOL добавляет символ новой строки, специфичный для платформы, на которой работает PHP с текстовыми файлами.

    Содержимое файла после выполнения вышеуказанного кода должно выглядеть следующим образом:

    • банан;
    • Китай.

    Функция file_put_contents() также может записывать в файл. Она принимает имя файла, данные, которые должны быть записаны и константу FILE_APPEND, если она должна добавить данные (будет перезаписывать содержимое файла по умолчанию).

    Вот такой же пример, как и выше, но на этот раз используется file_put_contents().

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

    Последнее обновление: 1.11.2015

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

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

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

    Для открытия файлов в PHP определена функция fopen() . Она имеет следующее определение: resource fopen(string $filename, string $mode) . Первый параметр $filename представляет путь к файлу, а второй - режим открытия. В зависимости от цели открытия и типа файла данный параметр может принимать следующие значения:

      "r" : файл открывается только для чтения. Если файла не существует, возвращает false

      "r+" : файл открывается только для чтения с возможностью записи. Если файла не существует, возвращает false

      "w" : файл открывается для записи. Если такой файл уже существует, то он перезаписывается, если нет - то он создается

      "w+" : файл открывается для записи с возможностью чтения. Если такой файл уже существует, то он перезаписывается, если нет - то он создается

      "a" : файл открывается для записи. Если такой файл уже существует, то данные записываются в конец файла, а старые данные остаются. Если файл не существует, то он создается

      "a+" : файл открывается для чтения и записи. Если файл уже существует, то данные дозаписываются в конец файла. Если файла нет, то он создается

    Результатом функции fopen будет дескриптор файла. Этот дескриптор используется для операций с файлом и для его закрытия.

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

    $fd = fopen("form.php", "r") or die("не удалось открыть файл"); fclose($fd);

    Конструкция or die("текст ошибки") позволяет прекратить работу скрипта и вывесте некоторое сообщение об ошибке, если функция fopen не смогла открыть файл.

    Чтение файла

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

    При каждом вызове fgets() PHP будет помещать указатель в конец считанной строки. Чтобы проследить окончание файла, используется функция feof() , которая возвращает true при завершении файла. И пока не будет достигнут конец файла, мы можем применять функцию fgets().

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

    При этом нам не надо открывать явно файл, получать дескриптор, а затем закрывать файл.

    Поблочное считывание

    Также можно провести поблочное считывание, то есть считывать определенное количество байт из файла с помощью функции fread() :

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

    Запись файла

    Для записи файла применяется функция fwrite() , которая записывает в файл строку:

    Аналогично работает другая функция fputs() :

    Работа с указателем файла

    При открытии файла для чтения или записи в режиме "w", указатель в файле помещается в начало. При считывании данных PHP перемещает указатель в файле в конец блока считанных данных. Однако мы также вручную можем управлять указателем в файле и устанавливать его в произвольное место. Для этого надо использовать функцию fseek , которая имеет следующее формальное определение:

    Int fseek (resource $handle , int $offset [, int $whence = SEEK_SET ])

    Параметр $handle представляет дескриптор файла. Параметр $offset - смещение в байтах относительно начала файла, с которого начнется считывание/запись. Третий необязательный параметр задает способ установки смещения. Он может принимать три значения:

      SEEK_SET : значение по умолчанию, устанавливает смещение в offset байт относительно начала файла

      SEEK_CUR : устанавливает смещение в offset байт относительно начала текущей позиции в файле

      SEEK_END : устанавливает смещение в offset байт от конца файла

    В случае удачной установки указателя функция fseek() возвращает 0, а при неудачной установке возвращает -1.

    Пример использования функции:

    $fd = fopen("hello.txt", "w+") or die("не удалось открыть файл"); $str = "Привет мир!"; // строка для записи fwrite($fd, $str); // запишем строку в начало fseek($fd, 0); // поместим указатель файла в начало fwrite($fd, "Хрю"); // запишем в начало строку fseek($fd, 0, SEEK_END); // поместим указатель в конец fwrite($fd, $str); // запишем в конце еще одну строку fclose($fd);

    16.5K

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

    Файлы php

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

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

    • Dreamweaver.
    • PHPEdit.
    • Eclipse PHP Development.
    При создании сайтов на основе php может потребоваться многократное использование программного кода. В таких ситуациях удобно подключать уже готовые решения, находящиеся в другом файле. Для этого используется конструкция include . Ее синтаксис:

    include имя_файла

    Пример подключения:

    Подключаемый файл:


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

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

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

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

    • Открытие файла;
    • Редактирование содержимого;
    • Закрытие файла.

    Для открытия файла используется функция fopen() . Ее синтаксис:

    int fopen(string filename, string mode [, int use_include_path])

    Принимаемые аргументы:

    • string filename – имя файла или абсолютный путь к нему. Если путь к файлу не будет указан, то будет произведен его поиск в текущем каталоге. При отсутствии искомого файла система выведет сообщение об ошибке. Пример:

    • string mode – указывает режим открытия файла. Принимаемые аргументом значения:
    • r – файл открыт только для чтения, файловый указатель устанавливается в начале;
    • r+ – файл открыт для чтения и записи;
    • w – создается новый файл только для записи. Если файл с таким именем уже существует, в нем происходит автоматическое удаление всех данных;
    • w+ — создается новый файл для записи и чтения. При существовании такого файла происходит полная перезапись его данных на новые;
    • a – файл открыт для записи. Указатель устанавливается в конце. То есть запись в файл php начнется не с начала, а с конца;
    • a+ – открытие файла в режиме чтения и записи. Запись начнется с конца;
    • b – режим работы с файлом, содержащим в себе двоичные данные (в двоичной системе исчисления). Этот режим доступен только в операционной системе Windows.

    Для закрытия доступа к файлу служит функция fclose () . Синтаксис:

    int fclose (int file) , где int file – дескриптор сайта, который нужно закрыть.

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

    Пример:

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

    Для простого отображения всего содержимого файла идеально подходит функция readfile () . Ее синтаксис:

    readfile (string filename) , где string filename – строковое имя фала (не дескриптор ).


    Тот же самый файл можно прочитать с помощью функции fpassthru () . Она считывает данные от конечной позиции указателя и до конца файла. Ее синтаксис:

    int fpassthru (int file)

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

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

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

    • string fgets (int file, int length) – функция считывает строку длиною length . Пример:

    • string fread (int file, int length) – по действию идентична предыдущей.

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

    • int fputs (int file, string string [, int length ])
    • int fwrite (int file, string string [, int length ])

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

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

    Чтобы создать файл php , можно использовать функцию fopen() в режиме доступа «w » или «w+ ». Или функцию touch () . Она устанавливает время изменения файла. При отсутствии элемента с искомым именем он будет создан. Ее синтаксис.