Программирование с нуля - это совсем просто! 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():
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. Напишите программу, которая будет проверять содержимое заглавной страницы некоего сайта на наличие в нем слова "человек".