Савельева Нина Владимировна
Шрифт:
?>
Для того чтобы считать содержимое бинарного файла, например изображения, в таких системах, как Windows, рекомендуется открывать файл с помощью флага rb или ему подобных, содержащих символ b в конце.
Функция filesize кэширует результаты своей работы. Если изменить содержимое файла my_file.html и снова запустить приведенный выше скрипт, то результат его работы не изменится. Более того, если запустить скрипт, считывающий данные из этого файла с помощью другой функции (например, fgetss), то результат может оказаться таким, как если бы файл не изменился. Чтобы этого избежать, нужно очистить статический кэш, добавив в код программы команду clearstatcache;
Функция fgets
С помощью функции fgets можно считать из файла строку текста. Синтаксис этой функции практически такой же, как и у fread, за исключением того, что длину считываемой строки указывать необязательно:
string fgets ( указатель на файл [, длина])
В результате работы функция fgets возвращает строку длиной (длина-1) байт из файла, на который указывает указатель на файл. Чтение заканчивается, если прочитано (длина-1) символов и встретился символ перевода строки или конец файла. Напомним, что в PHP один символ - это один байт. Если длина считываемой строки не указана (данная возможность появилась начиная с PHP 4.2.0), то считывается 1 Кбайт (1024 байт) текста или, что то же самое, 1024 символа. Начиная с версии PHP 4.3, если параметр длина не задан, считывается строка целиком. В случае ошибки функция fgets возвращает false. Для версий PHP начиная с 4.3 эта функция безопасна для двоичных файлов.
Обе функции, fread и fgets, прекращают считывание данных из файла, если встречают конец файла. В PHP есть специальная функция, проверяющая, смотрит ли указатель позиции файла на конец файла. Это булева функция feof, в качестве параметра которой передается указатель на соединение с файлом.
Например, вот так можно считать все строки файла my_file.html:
?>
Функция fgetss
Существует разновидность функции fgets - функция fgetss. Она тоже позволяет считывать строку из указанного файла, но при этом удаляет из него все встретившиеся html-теги, за исключением, быть может, некоторых. Синтаксис fgetss такой:
Обратите внимание, что здесь аргумент длина обязательный.
Пример 9.6. Пусть у нас имеется файл my_file.html следующего содержания:
У семи нянек<i> дитя без глазу</i>.
Выведем на экран все строки файла my_file.html, удалив из них все теги, кроме <b> и <i>:
?>
В результате работы этого скрипта получим:
У семи нянек дитя без глазу.
Функция fgetc
Естественно, если можно считывать информацию из файла построчно, то можно считывать ее и посимвольно. Для этого предназначена функция fgetc. Легко догадаться, что синтаксис у нее следующий:
string fgetc ( указатель на файл )
Эта функция возвращает символ из файла, на который ссылается указатель на файл, и значение, вычисляемое как FALSE, если встречен конец строки.
Вот так, например, можно считать файл по одному символу:
?>
На самом деле для того чтобы прочитать содержимое файла, открывать соединение с ним посредством функции fopen совсем не обязательно. В PHP есть функции, которые позволяют делать это, используя лишь имя файла. Это функции readfile, file и file_get_contents. Рассмотрим каждую их них подробнее.