Warning: array_merge(): Argument #2 is not an array in /hsphere/local/home/magistr/codeismy.name/wp-content/plugins/wp-pagenavi/scb/Options.php on line 46

Работа с файлами на PHP

Дата: Апрель 8, 2009

(0) комментариев

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

Работа с файлами состоит из 3-х этапов:
1. Открытие файла.
2. Управление данными.
3. Закрытие файла.

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

Для открытия файла в PHP используется функция fopen(). Обязательными параметрами этой функции является имя файла и режим файла.

$fp = fopen(‘file.txt’, ‘r’);

Согласно документации PHP выделяют следующие типы режимов:

1. r – открыть файла только для чтения.
2. r+ — открыть файла одновременно на чтение и запись.
3. w – создать новый пустой файл. Если на момент вызова уже существует такой файл, то он уничтожается.
4. w+ — аналогичен r+, только если на момент вызова файла такой существует, его содержимое удаляется.
5. a – открыть существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла).
6. a+ — открыть файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется.

Примечание: в конце любой из строк может существовать еще один необязательный параметр: b или t. Если указан b, то файл открывается в режиме бинарного чтения/записи. Если же t, то для файла устанавливается режим трансляции перевода строки, т.е. он воспринимается как текстовый.

Рассмотрим следующий сценарий для примера:

1
2
3
4
5
6
<?php
//Открывает файл в разных режимах
$fp = fopen('file.txt', 'r'); // Бинарный режим
$fp = fopen('file.txt', 'rt'); // Текстовый режим
$fp = fopen("http://www.yandex.ru", "r");// Открывает HTTP соединение на чтение
$fp = fopen("ftp://user:pass

II. Управление данными файла

Записывать данные в файл можно записывать несколькими функциями, одна из них fwrite(). Это функция принимает 2 обязательных параметра и 1 необязательный. Обязательные это дескриптор файла и режим файла:

1
2
3
4
5
<?php
$fp = fopen("file.txt", "a"); // Открываем файл в режиме записи
$mytext = "Это строку необходимо нам записать\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл

Для построчного считывания файла можно воспользоваться функцией fgets(). У неё есть 2 обязательных параметра:

1
2
3
4
5
6
7
8
9
10
11
<?php
$fp = fopen("file.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
while (!feof($fp))
{
$mytext = fgets($fp, 1111);
echo $mytext."<br />";
}
}
else echo "Ошибка пр

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

Для считывания файла полностьою, нужно использовать функцию readfile(), у которой 1 обязательный параметр. Функция открывает файл, отображает его содержимое в окне браузера, а затем закрывает файл:

1
2
3
<?php
echoreadfile("file.txt");
?>

Ещё можно использовать функцию fpassthru() у которой 1 обязательный параметр. Перед использованием этой функции необходимо открыть файл в режиме чтения.

1
2
3
4
<?php
$fp = fopen("file.txt", "r"); // Открываем файл в режиме чтения
if ($fp) echo fpassthru($fp);
elseecho "Ош

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

Примечание: Не следует применять функцию file() к двоичным файлам (binary-safe), т.к. она не является безопасной в плане считывания двоичных файлов, если при этом, где-то встретиться символ конца файла, то она не гарантирует вам чтение всего двоичного файла.

1
2
3
4
<?php
$file_array = file("file.txt"); // Считывание файла в массив $file_array
//
// Рабо

В ситуации, когда файл необходимо считать по символам. Для этого мы можем воспользоваться функцией fgetc(). Функция полезна если нам необходимо найти какой-либо символ или количество одинаковых символов.

1
2
3
4
5
6
7
8
9
10
<?php
$fp = fopen("file.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
  while(!feof($fp))
  {
  $char = fgetc($fp);
  if ($char == 'с') $i = $i + 1;// Находим символ «с»
  }
echo 'Количество букв "c" в

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

Закрытие файла выполняется функцией fclose(). Она принимает 1 обязательный параметр.

1
2
3
4
5
6
<?php
$fp = fopen("file.txt", "r");
if ($fp)
{
echo 'Файл открыт';
fclose($fp); // Закр

Ну а теперь немного практический примеров по работе с файлами.

Если нам необходимо проверить существует ли тот или иной файл. Для этого есть функция file_exists().

1
2
3
4
<?php
myfile("file.txt"); // Используем функцию myfile, передав в качестве аргумента имя файла

function myfile($name) //Создаем функцию для проверки существования фа

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

Определяем размер файла с помощью функции filesize()

1
2
3
4
5
6
<?php
myfile("file.txt");

function myfile($name) //Создаем функцию для проверки существования файла и определения размера файла
{
if (file_exists($name)) echo "Разме

Создание временного файла с помощью функции tmpfile()

1
2
3
4
<?php
$myfile = tmpfile();
fwrite($myfile, "Эта строка записывается во временный файл."); // Записываем во временный файл
fseek($myfile, 0); // Устанавливаем

Если вам необходимо определить количество строк в файле превратим файл в массив и сосчитаем количество элементов. Для этого используем функцию file() и count()

1
2
3
<?php
$fp = file("file.txt");
echo 'Количество строк в фай

Если вы хотите заблокировать файл то можно применить следующий код

1
2
3
4
5
<?php
$fp = fopen("file.txt", 'a');
flock($fp, LOCK_EX); // Блокирование файла для записи
fwrite($fp, "Строка для записи");
flock($fp, LOCK_

Если нам необходимо удалить определенную строку из файла

1
2
3
4
5
6
7
8
9
<?php
$num_stroka = 5; //Удалим 5 строку из файла
$file = file("file.txt"); // Считываем весь файл в массив

for($i = 0; $i < sizeof($file); $i++)
if($i == $num_stroka) unset($file[$i]);

$fp = fopen("file.txt", "w");
fput

Для определение типа файла используем функцию filetype().

1
2
3
<?php
$mytype = filetype("file.txt");
echo "Тип файла: ".$my

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

1. file – обычный файл
2. dir – каталог
3. ink – символическая ссылка (линукс)
4. fifo – fifo-канал
5. block – блочно — ориентированное устройство
6. char – символьно — ориентированное устройство
7. unknown – неизвестный тип файла

Если вы хотите просмотреть все параметры файла, то следует воспользоваться функцией stat()

1
2
3
4
5
6
<?php
$filename = stat("file.txt");
echo "<pre>";
print_r($filename);
echo "</pre>";
?>

Если необходимо очистить файл, используем функцию ftruncate()

1
2
3
<?php
$fp = fopen("file.txt", 'a'); //Открываем файл в режиме записи
ftruncate(

Если нам необходимо узнать дату последнего изменения файла, используем функцию filectime().

1
2
3
<?php
echo filectime("file.txt");
?>
a




    Нет комментариев на "Работа с файлами на PHP"

    Нет комментариев.


    Вы можете продолжить обсуждение этой статьи на форуме


    Имя : 
    Почта : 
    Сайт : 
    Комментарий : 

    Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.

    Создание сайта - Echo-group Раскрутка сайтов