Другие ресурсы
Лучший выбор, широкий ассортимент, шкафы купе в киеве.

Архив рубрики: ‘Работа с файлами’

Чтение данных из файла

В прошлой статье я описал как возможно записать данные в файл, но как же их извлечь оттуда? Для этого надо файл прочитать. Сделать это довольно таки просто:


<?php

$data_array 
= @file('./dir/file.txt');

foreach(
$data_array as $k=>$v)

{

       echo 
'Строка номер '.$k+1.' содержит данные '.$v.'<br/>';

}

?>

Функция file читает данные из файла в массив где каждый элемент массива-это строка файла. Ну а после для наглядности я преебираю весь массив.
Ну массив это конечно хорошо, но как поступить когда надо файл считать в строку? Во первых можно использовать тот же оператор file но дополнительно сделать вот так:


<?php

$data_string 
implode('',file('./dir/file.txt'));

В $data_string теперь находится текст файла превращенный в одну строку со всеми символами. Функция implode обьединяет массив в строку. Так же есть и второй вариант


<?php

 $data_string 
file_get_contents('./dir/file.txt');

?>

Хочу заметить что я привел далеко не полный перечень параметров для данной функции. Я воспользовался только обязательным параметром. Более подробно о ее параметрах я бы рекомендовал вам прочитать в официальной документации.
Но может быть и так что прежде чем открыть файл надо проверить существует он или нет. С этим замечательно справляется функция file_exists


<?php

if(file_exists('./dir/file.txt'))

{

          
//делаем что хотели

}

else

{

         print 
'Error!'//иначе выводим ошибку

}

?>

Каким из вышеперечисленных методов читать файл решать вам. Я предоставил лишь возможные варианты развития.

Сохраняем данные. Работа с файлами

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


<?php

$text 
'bla bla bla бум бум'// Это текс который мы хотим записать 

$fop fopen('./dir/file.txt','w+'); 

fputs($fop,$text);

fclose($fop);

?>

В переменной $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

$text 
'bla bla bla бум бум'// Это текс который мы хотим записать 

file_put_contents('./dir/file.txt',$text);

?>

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