Главная страница » Статьи и уроки » PHP статьи » Запись данных в файл. Функции PHP, отвечающие за эту операцию.
Опрос
Вы занимаетесь разработкой сайтов?
Выделенные и виртуальные серверы в Европе

Запись данных в файл. Функции PHP, отвечающие за эту операцию.

Автор: administrator Дата: 29-04-2018, 18:43 Категория: Статьи и уроки / PHP статьи

Запись данных целиком

Довольно часто требуется записать информацию в файл за один раз, без открытия дескриптора и построчной обработки данных. В PHP специально для решения этой задачи есть функция file_put_contents(). Её первый параметр принимает путь до файла, а второй — строку, предназначенную для записи.
Если файл на момент вызова не существует, он будет создан. Однако для осуществления этой операции нужны права, позволяющие создавать файлы в указанной директории. Обратите внимание на то, что данная функция перед осуществлением записи затирает всё содержимое файла.
Перезаписывание файла можно отменить за счет третьего необязательного параметра. Он принимает три вида флагов, которые могут быть объединены с помощью побитового оператора «или», записываемого как вертикальная черта «|».
Список доступных флагов:
  • FILE_APPEND — если файл существует, запись будет произведена в его конец.
  • FILE_USE_INCLUDE_PATH — присутствие данного флага говорит интерпретатору о том, что файл нужно искать в специальной директории. Она задается через конфигурацию php.ini с помощью параметра include_path.
  • LOCK_EX — при записи данных будет осуществлена эксклюзивная блокировка файла. Подробнее о блокировках рассказывается в следующих уроках.
//Используем функцию c флагом дописывания
$fileName = $_SERVER['DOCUMENT_ROOT']. '/test-file.txt';
$content  = "Данная строка будет записана в файл\n";
$length   = file_put_contents($fileName, $content, FILE_APPEND);

//Выводим отладочную информацию в браузер
if ($length !== false) {
    echo "В процессе выполнения было записано {$length} байт";

} else {
    echo "В процессе выполнения возникли ошибки";
}
Функция file_put_contents() возвращает либо число записанных байт, либо false в случае ошибки. Обратите внимание на пример, приведенный выше. Проверка возвращаемого значения происходит с помощью строгого сравнения. Это необходимо, так как для записи в файл можно передать пустую строку. В таком случае функция вернет число «0». Если использовать обычное сравнение, «0» будет приведен к логическому значению false и программа сделает неправильные выводы.

Заметка
Флаги являются глобальными константами. Они создаются PHP-интерпретатором автоматически. Некоторые программисты предпочитают использовать числовые значения данных констант. Например, вместо FILE_APPEND писать число «8». Мы не рекомендуем практиковать такой подход, так как имя константы само себя документирует. Со временем можно забыть, какое число за что отвечает.




Построчная запись в файл

Запись информации в файл может вестись и построчно. Для этого в PHP существует всего одна функция fwrite() с псевдонимом fputs(). Принцип действия довольно прост. В первом параметре она принимает дескриптор файла, а во втором строку, предназначенную для записи.
После завершения операции функция возвращает количество записанных байт, или false в случае ошибки. Также у функции есть третий необязательный параметр. Он является числовым и указывает на количество записываемых байт, после которых выполнение завершается автоматически.
//Открываем дескриптор и определяем данные
$handle = fopen($_SERVER['DOCUMENT_ROOT']. '/test-file.txt', 'w');
$content = "Всё содержимое строки будет записано в файл\n ";

//Запись только двух слов за счет третьего параметра
if ($handle !== null) {
    $length = fwrite($handle, $content, 27);
    fclose($handle);

    if ($length !== false) {
        echo "В процессе выполнения было записано {$length} байт";
    } else {
        echo "В процессе выполнения возникли ошибки";
    }

} else {
    echo "Невозможно открыть файл для записи";
}
  • Не нравится
  • 0
  • Нравится
Просмотров: 1 176 Напечатать Жалоба
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Написать комментарий
Ваше Имя:
Ваш E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Код: Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: