php создание файла, чтение и запись
- Подробности
- Категория: PHP
- Просмотров: 14263
В PHP часто приходится иметь дело с созданием файла...все очень просто нет файла на диске, код прогнался и файл появился, далее можно считать этот файл в другую переменную или даже любую страницу в интернете и потом что-нибудь туда записать...но для этого надо знать спец функции ...об этом в этой статье...
Чтобы создать файл на php в исполняемом скрипте надо всего лишь указать несколько функций:
Рассмотрим сразу пример:
<?php
$text = "Какой-то тут текст для записи в файл";
$fp = fopen("file.txt", "w" );
fwrite($fp, $text);
fclose($fp);
?>
Тут вы должны знать:
fopen() - функция открывает файл чтения или для записи и уточнениями;
Это уточнения (параметр mode функции fopen) очень важно:
- "r" - открыть файл в php ТОЛЬКО для чтения. Курсор помещается в начало.
- "r+" - открыть файл в php для чтения и для записи. Курсор помещается в начало. !!! - при этих двух режимах r и r+ файлы уже должны быть созданы(иначе вылезет ошибка Warning: fopen(file.txt) [function.fopen]: failed to open stream: No such file or directory in ...), а мы лишь читаем или у нас есть возможность дописывать.
- "w" - открывается файл ТОЛЬКО для записи. Файл урезается до нулевой длины - то есть затирается. Записывается, что нужно и Курсор ставится в начало.
- "w+" - открывается файл для записи И ЧТЕНИЯ! Остальное то же самое что и в режиме "w". !!! - при этих двух режимах - если файл не был создан - ПРЕДПРИМЕТСЯ ПОПЫТКА ЕГО СОЗДАТЬ!
- "a" - открыть файл ТОЛЬКО для записи. В отличие от "w" этот параметр не затирает содержимое файла, а ставит курсор в конец строки и добавляет в конец содержимое, которое мы хотели добавить.
- "a+" - открыть файл для записи и чтения.
fwrite($fp, $text) - функция записи в файл на php - то есть то что находится в переменной $text записывается в файл, который находится в переменной $fp;
fclose($fp) - функция закрытия файла, который мы записали в переменную $fp;
Все теперь вы спокойно можете создавать правильно файлы на php, открывать их для чтения и редактирования.
Полезные дополнения и функции PHP для работы с открытым файлом:
while(!feof($fp)){
$mytext = fgets($fp, 99);
echo $mytext."<br>";
}
здесь выполняется условие - "пока не достигнут конец файла то делай то то" while(!feof($fp))
1. Функция fgets($fp, 99) - позволяет разделить все содержимое на участки в 99 байт и далее, чтобы это отчетливее увидеть мы помещаем тег <br>
Эта функция string fgets ( resource handle [, int length] ) по умолчанию принимает в параметр length 1024 байта(1 килобайт), если не указать так и будет. Этот параметр необязателен с PHP 4.2.0 (В случае ошибки возвращает FALSE)
Доп функции для открытия, записи и создания файла
Функция - int readfile ( string filename [, bool use_include_path [, resource context]] ) - считываем файл как единое целое.
Читает файл и записывает содержимое в буфер вывода. И возвращает количество выведенных байт. В случае ошибки вернет, если не использована собачка - @readfile.
Что-то подобное получится:
В конце слова тег стоят <br>.
б. Функция - array file ( string filename [, int use_include_path [, resource context]] ), делает то же самое, что и функция readfile, за одним исключением она добавляет содержимое файла в массив:
Таким образом можно считывать любые странички в интернете: $lines = file('http://saitsozdanie.ru/'); и перебрать массив через функцию foreach;
3а. Функция string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] ) - позволяет получить содержимое в виде одной строки.
Это более универсальная функция PHP для считывания файла, похожа на функцию file, только содержимое возвращается в строку, а не в массив и можно задавать условия - с какого байта начинать - offset и с какого заканчивать - maxlen. При неудаче вернет FALSE.
Важно!!! - в этом случае функция заменяет сразу 3: fopen(), fread() и fclose() и таким образом избавляет от мароки.
3б. Функция int file_put_contents ( string filename, mixed data [, int flags [, resource context]] ) - идентична последовательному вызову функций fopen(), fwrite() и fclose() - возвращает количество записанных байт.