English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Основной Учебник

PHP Уровеньный Учебник

PHP & MySQL

PHP Референс Мануал

Файлы PHP (File)

В этом руководстве вы узнаете, как использовать файловые функции PHP для динамического создания, доступа (или чтения) и манипулирования файлами.

Обработка файлов с помощью PHP

Поскольку PHP является языком серверного программирования, он позволяет вам использовать файлы и каталоги, хранящиеся на веб-сервере. В этом руководстве вы узнаете, как использовать функции файловой системы PHP для создания, доступа и работы с файлами на веб-сервере.

Открытие файла с помощью функции fopen() в PHP

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

fopen(filename, mode)

Первый параметр, передаваемый функции fopen(), указывает имя файла, который нужно открыть, а второй параметр указывает, в каком режиме открывать файл. Например:

<?php
$handle = fopen("data.txt", "r");
?>
Тестировать, смотреть </>

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

РежимЧто он может сделать
rОткрывает файл только для чтения.
r+Открывает файл для чтения и записи.
wОткрывает файл только для записи и очищает его содержимое. Если файл не существует, PHP пытается создать его.
w+Открывает файл для чтения и записи, и очищает его содержимое. Если файл не существует, PHP пытается создать его.
aДобавление. Открывает файл только для записи. Сохраняет содержимое файла, пишя в конец файла. Если файл не существует, PHP пытается создать его.
a+Чтение/добавление. Открывает файл для чтения и записи. Сохраняет содержимое файла, пишя в конец файла. Если файл не существует, PHP пытается создать его.
xОткрывает файл только для записи. Если файл уже существует, возвращается False и генерируется ошибка. Если файл не существует, PHP пытается создать его.
x+Открывает файл для чтения и записи; в противном случае, его поведение такое же, как у "x".

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

<?php
$file = "data.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    // Попытка открыть файл
    $handle = fopen($file, "r");
} else {
    echo "ERROR: File does not exist.";
}
?>
Тестировать, смотреть </>

Совет:Операции с файлами и каталогами легко ошибиться. Поэтому реализация某种 формы проверки ошибок является хорошей привычкой, чтобы, если возникнет ошибка, ваш скрипт мог элегантно обрабатывать ошибки. См. такжеОбработка ошибок в PHPучебник.

Закрытие файла с помощью функции fclose() в PHP

После использования файла его необходимо закрыть. Функция fclose() используется для закрытия файла, как показано в следующем примере:

<?php
$file = "data.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    //Открываем файл для чтения
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    /* Здесь находится код для выполнения */
        
    //Закрываем файловый дескриптор
    fclose($handle);
} else {
    echo "ERROR: File does not exist.";
}
?>
Тестировать, смотреть </>

Внимание:Хотя PHP автоматически закрывает все открытые файлы при завершении скрипта, лучше всего закрывать файлы после выполнения всех операций.

Чтение файла с помощью функции fread() в PHP

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

Чтение фиксированного количества символов

Функция fread() может использоваться для чтения определенного количества символов из файла. Вы можете использовать базовую синтаксис этой функции.

fread(file handle, length in bytes)

Эта функция принимает два параметра - дескриптор файла и количество байт для чтения. В следующем примере из файла "data.txt" читается 20 байт, включая пробелы. Предположим, что файл "data.txt" содержит текст "The quick brown fox jumps over the lazy dog.".

<?php
$file = "data.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    //Открываем файл для чтения
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    //Чтение фиксированного количества байт из файла
    $content = fread($handle, "20");
        
    //Закрываем дескриптор файла
    fclose($handle);
        
    //Вывод содержимого файла
    echo $content;
} else {
    echo "ERROR: File does not exist.";
}
?>
Тестировать, смотреть </>

Указанный пример произведет следующий вывод:

The quick brown fox

Чтение всего содержимого файла

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

<?php
$file = "data.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    //Открываем файл для чтения
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    //Чтение всего файла
    $content = fread($handle, filesize($file));
        
    //Закрываем файловый дескриптор
    fclose($handle);
        
    //Вывод содержимого файла
    echo $content;
} else {
    echo "ERROR: File does not exist.";
}
?>
Тестировать, смотреть </>

Указанный пример произведет следующий вывод:

The quick brown fox jumps over the lazy dog.

Самый простой способ чтения всего содержимого файла в PHP - это использование функции readfile(). Эта функция позволяет вам читать содержимое файла без необходимости открывать его. Ниже приведен пример, который даст такой же вывод, как и в предыдущем примере:

<?php
$file = "data.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    //Чтение и вывод всего файла
    readfile($file) or die("ERROR: Cannot open the file.");
} else {
    echo "ERROR: File does not exist.";
}
?>
Тестировать, смотреть </>

Указанный пример произведет следующий вывод:

The quick brown fox jumps over the lazy dog.

Другой способ чтения всего содержимого файла без открытия файла - это использование функции file_get_contents(). Эта функция принимает имя файла и путь и читает весь файл в строковую переменную. Вот пример:

<?php
$file = "data.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    //Чтение всего файла в строку
    $content = file_get_contents($file) or die("ERROR: Cannot open the file.");
        
    //Вывод содержимого файла
    echo $content;
} else {
    echo "ERROR: File does not exist.";
}
?>
Тестировать, смотреть </>

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

Чтобы обрабатывать данные файла, вам нужно использоватьЦикл foreachПробегать по массиву. Это пример, который читает файл в массив и затем выводит его с помощью цикла:

<?php
$file = "data.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    //Чтение всего файла в массив
    $arr = file($file) or die("ERROR: Cannot open the file.");
    foreach($arr as $line){
        echo $line;
    }
} else {
    echo "ERROR: File does not exist.";
}
?>
Тестировать, смотреть </>

Запись файла с использованием функции fwrite() PHP

Таким образом, вы можете использовать функцию fwrite() PHP для записи данных в файл или добавления к существующему файлу. Основная грамматика функции может быть представлена следующим образом:

fwrite(file handle, string)

Функция fwrite() принимает два параметра - файловый дескриптор и строку данных, которые нужно записать, как показано в следующем примере:

<?php
$file = "note.txt";
    
//Строка данных для записи
$data = "The quick brown fox jumps over the lazy dog.";
    
//Открыть файл для записи
$handle = fopen($file, "w") or die("ERROR: Cannot open the file.");
    
//Запись данных в файл
fwrite($handle, $data) or die("ERROR: Cannot write the file.");
    
//Закрыть файловый дескриптор
fclose($handle);
    
echo "Данные успешно записаны в файл.";
?>

В предыдущем примере, если файл "note.txt" не существует, PHP автоматически создаст его и напишет данные. Однако, если файл "note.txt" уже существует, PHP удалит содержимое файла (если оно есть) перед写入 новым данными, но если вы хотите просто добавить данные в файл и сохранить текущее содержимое, пожалуйста, используйте пример выше:Режим a вместо w.

Другой метод - использовать функцию file_put_contents(). Это функция-аналог file_get_contents(), которая предоставляет удобный способ写入 данные в файл без необходимости открывать его. Функция принимает имя файла и путь к нему, а также данные, которые нужно записать в файл. Вот пример:

<?php
$file = "note.txt";
    
//Строка данных для записи
$data = "The quick brown fox jumps over the lazy dog.";
    
//Запись данных в файл
file_put_contents($file, $data) or die("ERROR: Cannot write the file.");
    
echo "Данные успешно записаны в файл.";
?>

Если функция file_put_contents() указывает на существующий файл, то по умолчанию PHP будет перезаписывать его. Если вы хотите сохранить содержимое файла, вы можете передать специальный флаг FILE_APPEND в качестве третьего параметра функции file_put_contents(). Он просто добавит новые данные в файл, не перезаписывая его. Вот пример:

<?php
$file = "note.txt";
    
//Строка данных для записи
$data = "The quick brown fox jumps over the lazy dog.";
    
//Запись данных в файл
file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file.");
    
echo "Данные успешно записаны в файл.";
?>

Переименование файла с помощью функции rename() PHP

Вы можете использовать функцию rename() PHP для переименования файла или директории, как показано ниже:

<?php
$file = "file.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    //Попытка переименовать файл
    if(rename($file, "newfile.txt")){
        echo "Файл успешно переименован.";
    } else {
        echo "Ошибка: файл не может быть переименован.";
    }
} else {
    echo "Ошибка: файл не существует.";
}
?>

Удаление файла с помощью функции unlink() PHP

Вы можете использовать функцию unlink() PHP для удаления файла или директории, как показано ниже:

<?php
$file = "note.txt";
 
//Проверка наличия файла
if(file_exists($file)){
    //Попытка удаления файла
    if(unlink($file)){
        echo "Файл успешно удален.";
    } else {
        echo "Ошибка: файл не может быть удален.";
    }
} else {
    echo "Ошибка: файл не существует.";
}
?>

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

Функции файловой системы PHP

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

Функция
Описание
fgetc()Прочитать один символ.
fgets()Прочитать одну строку.
fgetcsv()Прочитать строку с разделителями, разделенными запятыми.
filetype()Вернуть тип файла.
feof()Проверьте, достигли ли вы конца файла.
is_file()Проверьте, является ли файл обычным файлом.
is_dir()Проверьте, является ли файл каталогом.
is_executable()Проверьте, можно ли выполнять файл.
realpath()Вернуть нормализованное абсолютное имя пути.
rmdir()Удалите пустую директорию.

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