KnigaRead.com/

White cat - Справочник по PHP

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн white cat, "Справочник по PHP" бесплатно, без регистрации.
Перейти на страницу:

int tmpfile()

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

Пространство, занимаемое временным файлом, автоматически освобождается при его закрытии и при завершении работы программы.

Открытие файла


fopen


Открывает файл и привязывает его к дескриптору.

Синтаксис:

int fopen(string $filename, string $mode, bool $use_include_path=false)

Открывает файл с именем $filename в режиме $mode и возвращает дескриптор открытого файла. Если операция "провалилась", то функция возвращает false. Необязательный параметр use_include_path говорит о том, что, если задано относительное имя файла, его следует искать также и списке путей, используемом инструкциями include() и require(). Обычно этот параметр не используют.

Параметр $mode может принимать следующие значения:

Но это еще не полное описание параметра $mode. Дело в том, что в конце любой из строк r,w,a,r+,w+ и a+ может находиться еще один необязательный символ - b или t. Если указан b (или не указан вообще никакой), то файл открывается в режиме бинарного чтения/записи. Если же это t, то для файла устанавливается режим трансляции символа перевода строки, т.е. он воспринимается как текстовой.


tmpfile


Создает новый временный файл с уникальным именем и открывает его на чтение и запись.

Синтаксис:

int tmpfile()

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

Пространство, занимаемое временным файлом, автоматически освобождается при его закрытии и при завершении работы программы.

Закрытие файла


fclose


Закрывает файл, открытый предварительно функцией fopen().

Синтаксис:

int fclose(int $fp)

Возвращает false, если файл закрыть не удалось (например, что-то с ним случилось или же разорвалась связь с удаленным хостом). В противном случае возвращает значение "истина".

Всегда нужно закрывать FTP- и HTTP-соединения, потому что в противном случае "беспризорный" файл приведет к неоправданному простою канала и излишней загрузке сервера. Кроме того, успешно закрыв соединение, вы будете уверены в том, что все данные были доставлены без ошибок.

Чтение и запись


fread


Читает из открытого файла определенное количество символов.

Синтаксис:

string fread(int $f, int $numbytes)

Читает из файла $f $numbytes символов и возвращает строку этих символов. После чтения указатель файла продвигается к следующему после прочитанного блока позициям. Если $numbytes больше, чем можно прочитать из файла, возвращается то, что удалось считать. Этот прием можно использовать, если вам нужно считать в строку файл целиком. Для этого просто задайте в $numbytes очень большое число. Но если вы заботитесь об экономии памяти в системе, так поступать не рекомендуется.


fwrite


Запись в файл.

Синтаксис:

int fwrite(int $f, string $str)

Записывает в файл $f все содержимое строки $str. Эта функция составляет пару для fread(), действуя "в обратном направлении".

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


fgets


Читает из файла одну строку, заканчивающуюся символом новой строки n.

Синтаксис:

string fgets(int $f, int $length)

Этот символ также считывается и включается в результат. Если строка в файле занимает больше $length-1 байтов, то возвращаются только ее $length-1 символов. Функция полезна, если вы открыли файл и хотите "пройтись" по всем ее строкам. Однако даже в этом случае (и быстрее) будет воспользоваться функцией File(). Стоит также заметить, что эта функция (как и функция fread()) в случае текстового режима в Windows заботиться о преобразовании пар rn в один символ n.


fputs


Полный аналог fwrite().

Синтаксис:

int fputs(int $f, string $str)


fgetcsv


Функция для работы с одним из форматов файлов, в котором может сохранять данные Excel.

Синтаксис:

list fgetcsv(int $f, int $length, char $delim=",")

Функция читает строку из файла, заданного дескриптором $f, и разбивает ее по символу $delim. Параметр $delim должен обязательно быть строкой из одного символа, в противном случае принимается во внимание только первый символ этой строки. Функция возвращает получившийся список или false, если строки кончились. Параметр $length задает максимальную длину строки точно так же, как это делается в fgets(). Пустые строки в файле не игнорируются, а возвращаются как список из одного элемента - пустой строки.

Пример:

$f=fopen("file.csv","r") or die("Ошибка");

for($i=0; $data=fgetscsv($f, 1000, ";"); $i++) {

$num = count($data);

if($num==1 && $data[0]==="") continue;

echo "<h3>Строка номер $i ($num полей):</h3>";

for($c=0; $c<$num; $c++)

print "[$c]: $data[$c]<br>";

}

fclose($f);


Положение указателя текущей позиции


feof


Указатель конца файла.

Синтаксис:

int feof(int $f)

Возвращает true, если достигнут конец файла (то есть если указатель файла установлен за концом файла).

Пример:

$f=fopen("myfile.txt","r");

while(!feof($f))

{ $str=fgets($f);

// Обрабатываем очередную строку $str


}

fclose($f);



fseek


Устанавливает указатель файла на определенную позицию.

Синтаксис:

int fseek(int $f, int $offset, int $whence=SEEK_SET)

Устанавливает указатель файла на байт со смещением $offset (от начала файла, от его конца или от текущей позиции, в зависимости от параметра $whence). Это может и не сработать, если дескриптор $f ассоциирован не с обычным локальным файлом, а с соединением HTTP или FTP.

Параметр $whence задает с какого места отсчитывается смещение $offset. В PHP для этого существуют три константы, равные, соответственно, 0, 1 и 2:

В случае использования последних двух констант параметр $offset вполне может быть отрицательным (а при применении SEEK_END он будет отрицательным наверняка). В случае успешного завершения эта функция возвращает 0, а в случае неудачи -1.


ftell


Возвращает положение указателя файла.

Синтаксис:

int ftell(int $f)

Функции для определения типов файлов


file_exists


Проверяет существование вызываемого файла.

Синтаксис:

bool file_exists(string filename)

Возвращает true, если файл с именем filename существует на момент вызова. Следует использовать эту функцию с осторожностью.

Например, следующий код никуда не годится с точки зрения безопасности:

if(!file_exists($fname))

$f=fopen($fname,"w");

else

$f=fopen($fname,"r");


Дело в том, что между вызовом file_exists() и открытием файла в режиме w проходит некоторое время, в течение которого другой процесс может вклиниться и подменить используемый нами файл. Данная проблема выходит на передний план при написании сценария счетчика.

Функция не работает с удаленными файлами, файл должен находиться в доступной для сервера файловой системе.

Результаты функции кэшируются, см. функцию clearstatcache().


filetype


Возвращает тип файла.

Синтаксис:

string filetype(string filename)

Возвращает строку, которая описывает тип файла с именем filename. Если такого файла не существует, возвращает false.

После вызова строка будет содержать одно из следующих значений:


is_file


Проверка существования обычного файла.

Синтаксис:

bool is_file(string filename)

Возвращает true, если filename - обычный файл.


is_dir


Проверка существования каталога.

Синтаксис:

bool is_dir(string filename)

Возвращает true, если каталог filename существует.


is_link


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

Синтаксис:

bool is_link(string filename)

Возвращает true, если filename - символическая ссылка.

Функция не работает под Windows.


is_readable


Проверка существования файла, доступного для чтения.

Синтаксис:

bool is_readable(string filename)

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

Обычно PHP осуществляет доступ к файлу с привелегиями пользователя, запускающего web-сервер (часто "nobody"). Соображения безопасности должны приниматься в расчет.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*