Язык программирования PHP | страница 86




>array file ( имя_файла

> [, use_include_path])


Что за массив возвращает эта функция? Каждый элемент данного массива является строкой в файле, информацию из которого мы считываем (его имя задано аргументом имя_файла). Символ новой строки тоже включается в каждый из элементов массива. В случае ошибки функция file(), как и все уже рассмотренные, возвращает false. Дополнительный аргумент use_include_path опять же определяет, искать или нет данный файл в директориях include_path. Открывать удаленные файлы с помощью этой функции тоже можно, если не запрещено сервером. Начиная с PHP 4.3 работа с бинарными файлами посредством этой функции стала безопасной.


Например, у нас имеется файл my_file.html следующего содержания:


>

Без труда не вынешь

> и рыбку из пруда.


Тише едешь - дальше будешь


Прочитаем его содержимое с помощью функции file():


>

>$arr = file ("my_file.html");

>foreach($arr as $i => $a) echo $i,": ",

> htmlspecialchars($a), "
";


?>


В результате на экран будет выведено следующее сообщение:


>0:

Без труда не вынешь

> и рыбку из пруда.


1: Тише едешь - дальше будешь


Функция file_get_contents


В версиях PHP начиная с 4.3 появилась возможность считывать содержимое файла в строку. Делается это с помощью функции file_get_contents(). Как и две предыдущие функции, в качестве параметров она принимает значение имени файла и, возможно, указание искать его в директориях include_path. Для порядка все равно приведем ее синтаксис:


>string file_get_contents (

> имя_файла [, use_include_path])


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


Проверка существования файла


Итак, создавать файл мы научились, записывать данные в него - научились, считывать данные из файла - тоже научились. Но вот вопрос: а что если файла, с которым мы пытаемся проделать все эти операции, не существует? Или он недоступен для чтения или записи? Очевидно, что в таком случае ни одна из изученных нами функций работать не будет и PHP выдаст сообщение об ошибке. Чтобы отслеживать такого рода ошибки, можно использовать функции file_exists(),   is_writable(),  is_readable(). 


Функция file_exists


Синтаксис:


>bool file_exists (имя файла или директории)


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