Архив рубрики: ‘Работа с файлами’
Чтение данных из файла
В прошлой статье я описал как возможно записать данные в файл, но как же их извлечь оттуда? Для этого надо файл прочитать. Сделать это довольно таки просто:
|
Функция file читает данные из файла в массив где каждый элемент массива-это строка файла. Ну а после для наглядности я преебираю весь массив.
Ну массив это конечно хорошо, но как поступить когда надо файл считать в строку? Во первых можно использовать тот же оператор file но дополнительно сделать вот так:
|
В $data_string теперь находится текст файла превращенный в одну строку со всеми символами. Функция implode обьединяет массив в строку. Так же есть и второй вариант
|
Хочу заметить что я привел далеко не полный перечень параметров для данной функции. Я воспользовался только обязательным параметром. Более подробно о ее параметрах я бы рекомендовал вам прочитать в официальной документации.
Но может быть и так что прежде чем открыть файл надо проверить существует он или нет. С этим замечательно справляется функция file_exists
|
Каким из вышеперечисленных методов читать файл решать вам. Я предоставил лишь возможные варианты развития.
Сохраняем данные. Работа с файлами
Теперь мы знаем как проверить переменные, но надо еще их куда то сохранять. Ведь переменная доступна лишь во время выполнения сценария, но если нам надо сохранить их где-то чтобы в дальнейшем воспользоваться тут нам переменные просто не помогут. Вариантов в общем то много, кукисы, сессии, базы данных, но самый простейший для понимания, на мой взгляд-сохранение в файлы.
Итак приступим.
|
В переменной $text находятся данные которые мы пишем в файл.
Дальше требуется открыть уже существующий или создать новый файл для этого нам понадобится функция fopen. В дирректории в которой расположен скрипт есть дирректория dir в ней мы создаем файл file.txt. Второй параметр данной функции определяет ее поведение. Ниже в таблице представлены возможные значения.
| mode | Описание |
|---|---|
| ‘r’ | Открывает файл только для чтения; помещает указатель в начало файла. |
| ‘r+’ | Окрывает файл для чтения и записи; помещяет указатель в начало файла. |
| ‘w’ | Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует – пробует его создать. |
| ‘w+’ | Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует – пробует его создать. |
| ‘a’ | Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует – пытается его сздать. |
| ‘a+’ | Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует – пытается его сздать. |
| ‘x’ | Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст предупреждение уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2). Эта опция поддерживается начиная с версии PHP 4.3.2 и выше, и работает только для локальных файлов. |
| ‘x+’ | Создаёт и открывает для чтения и записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст предупреждение уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2). Эта опция поддерживается начиная с версии PHP 4.3.2 и выше, и работает только для локальных файлов. |
Функция fputs запишет в поток fop данные $text Ну а fclose закроет файл. Данный пример будет работать как в php 4 так и в php5 но согласитесь он хоть и работоспособен но оооооочень неудобен. Три оператора для одного действия… В php5 появился более простой способ записи в файл: функция file_put_contents
Т.е можно привести идентичный пример:
|
Это собственно основополагабщая информация которую вы обязаны знать, если хотите научиться написанию php скриптов.