Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 122) Курс PHP: Работа с файлами


Школа программирования

122) Курс PHP: Работа с файлами

Язык PHP, как и любой другой язык программирования, предоставляет стандартный набор возможностей по работе с файлами. А отличительной особенностью библиотеки файловых функций PHP являются средства работы как с локальными (расположенными в том же файловом пространстве, где и PHP-сценарий), так и с удаленными наборами данных, доступ к которым происходит по сети.

Открытие файла осуществляется с помощью функии

fopen( имя-файла, режим-открытия );

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

  ' r ' - открыть для чтения;
  ' r+ ' - открыть для чтения и записи, запись будет начинаться с начала
  файла;
  ' w ' - открыть для записи;
  ' w- ' - открыть для чтения и записи, запись будет начинаться с конца
  файла;
  ' a ' - открыть для записи в конец;
  ' a+ ' - открыть для чтения и записи в конец.

Функция возвращает целое число - системный идентификатор открытого файла.

Открытие текстового файла для чтения:

  $fp = fopen ("/home/ file.txt", "r"); // в Unix/Linux
  $fp = fopen ("c:\\data\\info.txt", "r"); // в Windows

Если открыть файл не удалось, функция вернет значение 0.

Закрытие файла выполняется функцией

fclose( fp );

fp - идентификатор ранее открытого файла.

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

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

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

  $buffer = fgets($fp, 80);

Происходит попытка ввода 80 символов.

Запись строки в файл происходит с помощью функции fputs():

  $string="hello";
  $file = "zadanie.txt";
  $fp= fopen($file,"w");
  fputs($fp, $string);

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

feof( идентификатор-файла )

которая возвращает 1, если файл закончен, и 0 в противном случае.

Вот как может выглядеть вывод содержимого некоторого файла на экран:

  $fp = fopen ("c:\\my\\lover. txt", "r"); // открыть

  while ( ! feof ( $fp ) ) { // пока не конец файла
     $buf = fgets( $fp ); // вводим строку из файла в переменную $buf
     print $buf . "<p>"; // выводим ее на экран
  }
fclose ($fp); // закрыть

В начале названия файла можно указать протокол доступа "http://" . Тогда сценарий попробует обратиться к такому файлу дистанционно, по сети. Чаще всего этот прием применяется для автоматического анализа содержимого сайтов.

Следующий код выводит на экран html-структуру сайта xxx.ru:

  $fp = fopen ("http://xxx.ru/", "r"); // открыть

  while ( ! feof ( $fp ) ) { // пока не конец файла
     $buf = fgets( $fp ); // вводим строку из файла в переменную $buf
     print $buf . "<p>"; // выводим ее на экран
  }

  fclose ($fp); // закрыть

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

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

  $MyArray = file( ' myfile.txt ' );

Содержимое массива $MyArray можно далее обрабатывать стандартными методами работы с массивами (число элементов в массиве находится функцией count() ).

Задания.
1. Создайте форму с полями "имя" и "пароль", данные из которой PHP-сценарий при получении будет записывать (добавлять) в локальный текстовый файл, находящийся с ним в одном каталоге.
2. Напишите программу, которая будет проверять содержимое заглавной страницы некоего сайта на наличие в нем слова "человек".


(c) 2004-2006 Сергей Бобровский bobrovsky as russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/

Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное