Php fopen while feof

Запись и чтение файлов в PHP: как это работает, как использовать, примеры

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

fopen() и fgets()

Итак, fopen() — функция в PHP, которая используется для открытия файла. Впрочему, понять это несложно даже из её названия.

Если функция выполняется успешно, она возвращает указатель на файл (файловый дескриптор). Сразу небольшой пример:

Не стоит путать функцию fopen() и функцию fgets() — подробнее о ней мы поговорим ниже.

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

Важный момент: fopen() лучше, чем readfile() справляется с файловыми операциями.

fсlose

Функция fсlose() используется для закрытия ранее открытого файла. При этом потребуется дескриптор файла, который мы хотим закрыть.

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

Чтение

Для чтения файла полностью, построчно или поблочно в PHP применяются разные функции. Все ниже разобранные варианты дают тонкий контроль над файлом, который нужно прочитать. Если же требуются «сырые», двоичные данные, то имеет смысл пользоваться функциями более высокого уровня.

Функция fgets()

Функция fgets() применяется для построчного чтения. Сама функция принимает в качестве аргумента файловый дескриптор и возвращает следующую строку из файла. Выглядит это так:

Важно: символ новой строки в конце также включается в возвращаемое значение.

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

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

1. File — файловый дескриптор, из которого считывается строка.

2. Length — опциональный параметр для указания суммарного числа байт, которые нужно прочитать.

Ниже мы дадим два несложных примера.

(В этом блоке осуществляется чтения полного содержимого первой строки из файла).

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

Используйте этот пример для чтения всех строк из файлов по одной с помощью цикла for.

Читайте также:  Qmessagebox pyqt5 пример python

Нужно определить окончание файла? Нет ничего проще: используйте функцию feof(). Вот как это выглядит:

Синтаксис функции

Функция fgets использует следующий синтаксис:

Функция file_get_contents()

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

file_get_contents() является наиболее удобным инструментом для чтения содержимого файла в строку

Для улучшения производительности эта функция поддерживает memory mapping (вывод в память). Если сервер поддерживает memory mapping, то использовать file_get_contents() можно еще более эффективно.

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

file_get_contents(path,include_path,context,start,max_length).

Итак, функция file_get_contents считывает содержимое файла в строку, содержащую все строки из файла, разделенные символами новой строки.

Функция fread()

Функция fread() используется для поблочного чтения. Принцип действия такой же, как у функции readfile().

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

Запись

Для записи файлов в PHP используется функция fwrite и ее псевдоним fputs.

fwrite()

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

Функция fwrite() имеет следующий синтаксис:

Чуть подробнее о параметрах:

  • $handle — это файловый дескриптор.
  • $string — это данные, которые будут записаны в файл.
  • $length — необязательный параметр, который может использоваться для уточнения количества записываемых байтов.

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

Пример использования fwrite()

Пример использования fwrite()

fputs()

Это псевдоним функции fwrite. Другими словами, он может использоваться идентично функции fwrite.

Функция fputs идентична fwrite во всех отношениях.

Обратите внимание: параметр длины является необязательным, и если он не указан, то будет записана вся строка.

bool fputs(resource file_handle, string data, [int bytes])

TRUE при успехе; FALSE — при ошибке.

  • file. Обязательный параметр. Ссылается на файл для записи.
  • string. Обязательный параметр. Ссылается на конкретную строку для записи в файл.
  • length. Опциональный параметр. Обозначает максимальный размер в байтах.

Указатель и взаимодействие с ним

Для работы с указателем мы разберем только одну функцию — fseek. Она позволяет провести поиск в любом файле.

fseek()

По сути функция используется для одной цели — для перемещения указателя в файле (задаётся точное число байт для смещения).

fseek() позволяет переместить указатель как вперёд, так и назад

В случае успешного выполнения — происходит возврат нуля, в противном случае возвращается -1.

Взглянем на важные параметры этой функции:

  • file. Обязательные параметр — файловый дескриптор.
  • offset. Обязательный параметр, задающий смещение текущей позиции в файле.
  • whence. Опциональные параметр, который может иметь три значения:
  1. SEEK_SET. Это значение используется по умолчанию. По сути, это установка смещения в offset байт.
  2. SEEK_END. Используется для установки позиции в самый конец файла плюс offset (offset должен быть отрицательным числом).
  3. SEEK_CUR. Используются для установки позиции в текущее положение плюс offset.
Читайте также:  How to save css file

Рекомендация: если вам необходимо узнать текущую позицию в файле, примените функцию ftell().

Профессия веб-разработчика остается одной из самых популярных в 2023 году. PHP — лишь часть широкого стека, который задействован в этом направлении. Успейте попасть в группу!

Источник

PHP | Открытие, чтение, закрытие файлов

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

Функция PHP fopen()

Функция fopen() в PHP — это встроенная функция, которая используется для открытия файла или URL-адреса. В случае сбоя, она возвращает FALSE и выдаёт ошибку. Если вам нужно скрыть вывод ошибки добавьте символ ‘@’ перед именем функции.

Синтаксис

Параметры

  • filename : Обязательный параметр, определяющий файл.
  • mode : Обязательный параметр, определяющий тип доступа к файлу или потоку.
    Он может иметь следующие возможные значения:
    • «r»: Открывает файл только для чтения; помещает указатель в начало файла.
    • «r+»: Окрывает файл для чтения и записи; помещяет указатель в начало файла.
    • «w»: Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует — пробует его создать.
    • «w+»: Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует — пробует его создать.
    • «a»: Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует — пытается его создать.
    • «a+»: Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует — пытается его создать.
    • «x»: Создаёт и открывает только для записи. Он создает новый файл и возвращает FALSE и ошибку, если файл уже существует.
    • «x+»: Создаёт и открывает для чтения и записи. Создает новый файл и возвращает FALSE и ошибку, если файл уже существует.
    • «c»: Открывает файл только для записи. Если файл не существует, то он создается. Если же файл существует, то он не обрезается (в отличие от ‘w’), и вызов к этой функции не вызывает ошибку (также как и в случае с ‘x’).
    • «c+»: Открывает файл для чтения и записи; в остальном имеет то же поведение, что и ‘c’.
    • «e»: Установить флаг close-on-exec (закрыть при запуске) на открытый файловый дескриптор. Доступно только в PHP скомпилированном на системах поддерживающих POSIX.1-2008.

    В этом уроке мы будем использовать текстовый файл mane.txt:

    AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language

    В следующем примере, ипользуя функцию fopen() , откроем файл «mane.txt» в режиме чтения:

    Пример

     echo fread($myfile,filesize("mane.txt")); 
    fclose($myfile);
    ?>

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

    Чтение файла — fread()

    Функция fread() считывает информацию из открытого файла.

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

    Следующий код PHP читает файл «mane.txt» до конца:

    Закрытие файла — fclose()

    Функция fclose() используется, чтобы закрыть открытый файл.

    Синтаксис

    bool fclose ( resource handle )

    Функция закрывает файл, на который указывает handle.

    Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

    Дескриптор должен указывать на файл, открытый ранее с помощью функции fopen() или fsockopen() .

    Примечание: Хорошая практика программирования — закрывать все файлы после того, как вы закончили с ними работать. Дело в том, что открытый файл на вашем сервере продолжает занимать ресурсы!

    Однострочное чтение — fgets()

    Функция fgets() используется для чтения одной строки из файла.

    В приведенном ниже примере выводится первая строка файла mane.txt:

    Пример

     echo fgets($myfile); 
    fclose($myfile);
    ?>

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

    Проверка окончания файла — feof()

    Функция feof() определяет, достигнут ли конец файла. Если в указанном дескрипторе, определяется окончание файла, возвращает True . В противном случае, False .

    Функция feof() полезна для цикла работающего с данным неизвестной длины.

    В приведенном ниже примере файл «mane.txt» считывается построчно, пока не будет достигнут конец файла:

    Пример

     while(!feof($myfile)) < // цикл завершится, при обнаружении конца файла
    echo fgets($myfile) . "
    "; // Вывести одну строку
    >
    ?>

    Чтение одного символа — fgetc()

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

    В приведенном ниже примере файл «mane.txt» считывается посимвольно, пока не будет достигнут конец файла:

    Пример

     while(!feof($myfile)) < // цикл завершится, при обнаружении конца файла
    echo fgetc($myfile) . "
    "; // Вывести один символ
    >
    ?>

    Примечание: Не перепутайте имя функции fgets() оканчивается символом s — string, а имя функции fgetc() оканчивается символом c — character.

    Источник

Оцените статью