Начиная с данного урока, мы начнем учится работать с файловой системой. Для начала изучим простейшие операции чтения и записи файлов.
Чтение файла
Функция file_get_contents
позволяет
выполнять чтение файла. Параметром функция
принимает имя файла, а своим результатом
возвращает текст этого файла.
Давайте посмотрим на практике. Пусть у нас
есть файл index.php
, к которому мы
обращаемся через браузер. Пусть также в этой
же папке находится файл test.txt
.
Давайте прочитаем текст текстового файла и выведем этот текст на экран:
<?php
echo file_get_contents('test.txt');
?>
Пусть у вас есть файлы 1.txt
и 2.txt
,
в тексте которых записаны какие-то числа.
Напишите скрипт, который выведет на экран
сумму записанных в этих файлах чисел.
Запись файла
Давайте теперь научимся записывать данные
в файлы. Для этого предназначена функция
file_put_contents
, которая первым
параметром принимает путь к файлу, а вторым
- текст, который мы хотим записать.
Для примера давайте запишем какой-нибудь
текст в файл test.txt
:
<?php
file_put_contents('test.txt', '!');
?>
Дан массив с числами. Найдите сумму этих
чисел и результат запишите в файл sum.txt
.
Комбинация операций
Чтение и запись файлов можно комбинировать. Давайте для примера прочитаем файл, добавим в конец его текста восклицательный знак и запишем текст обратно в этот файл:
$text = file_get_contents('test.txt');
file_put_contents('test.txt', $text . '!');
Пусть у вас есть файл, в котором записано некоторое число. Откройте этот файл, возведите число в квадрат и запишите обратно в файл.
Пусть в корне вашего сайта лежит файл count.txt
.
Изначально в нем записано число 0
.
Сделайте так, чтобы при обновлении страницы
наш скрипт каждый раз увеличивал это число
на 1
. То есть у нас получится счетчик
обновления страницы в виде файла.
Пусть в корне вашего сайта лежат файлы 1.txt
,
2.txt
и 3.txt
. Вручную сделайте
массив с именами этих файлов. Переберите
его циклом, прочитайте содержимое каждого
из файлов, слейте его в одну строку и запишите
в новый файл new.txt
. Изначально этого
файла не должно быть.