Працюємо з файлами на php, php

В даний час існує величезна кількість засобів для створення по
істині інтерактивних веб додатків. Серед найбільш популярних варто відзначити asp, perl і php. Ці кошти міцно увійшли в життя веб-розробника. На даний моментсамим швидко розвиваються є мова php. Тому розглянемо його можливості більш детально.

php є впроваджуються мовою сценаріїв. Багато що з його синтаксису
запозичене з c, java і perl з деякими, закладеними в нього, унікальними
особливостями. Мета мови полягає в тому, щоб дозволити веб-розробникам швидко створювати динамічно генеруються сторінки.

Розвиток Мережі диктує свої вимоги щодо надання користувачу
що цікавить його інформацією. Сайт - це не тільки набір веб-сторінок. Це ще й засіб для зберігання інформації, організації обробки запитів користувача і створення адекватної відповіді на користувальницький запит.

Зберігати інформацію на сервері можна декількома способами. Перший - з
використанням баз даних. Дуже зручний спосіб зберігання великих обсягів
інформації, коли необхідно організовувати вибірки, сортувати інформацію за різними параметрами і т. д. Якщо ж необхідно обробити невеликий обсяг
інформації, та ще й без якихось хитрощів (наприклад, організувати облік
відвідувань), то підійде другий спосіб - розміщення інформації в файлах.

php надає дуже великий набір засобів по роботі з файлами і файлової
системою. Розглянемо докладніше деякі функції для роботи з файлами.

Природно, для початку роботи з файлом його треба відкрити. Для цього
призначена функція fopen (). Це може бути корисним для відкриття будь-якого файлу в файлової системі сервера через http або ftp:

int fopen (string filename, string mode);

filename - ім'я файлу, mode - покажчик на режим відкриття файлу.
Він може приймати одне з наступних значень:

Значення Опис a Відкрити файл тільки для доповнень. Дані дописують в
кінець файлу. a + Відкрити файл для доповнення та читання. Дані дописують в кінець файлу. r Відкрити файл тільки для читання.

r + Відкрити файл для читання і доповнення. Дані дописують в початок файлу. w
Відкрити файл тільки для запису. Існуючі дані будуть втрачені. w + Відкрити файл для читання і запису. Існуючі дані будуть втрачені.

При роботі з двійковим файлом, необхідно вказати прапор b. Однак, якщо між
двійковими і текстовими файлами не робиться відмінності (як в системі unix), то цей
прапор ігнорується.

При успішному виконанні функція fopen () повертає дескриптор файлу, який
являє собою ціле число. Цей дескриптор призначений для посилань на файл
при наступних викликах функцій роботи з файлами. При невдачі повертається false.
приклад:

По завершенні роботи з файлом необхідно його закрити:

int fclose (int fp)

Як аргумент, функція fclose () приймає дескриптор закривається
файлу. При вдалому завершенні повертає true, в разі невдачі - false.

Просто так файли відкривати безглуздо. З ними треба щось робити. перше,
що спадає на думку - вивести вміст файлу на екран. Цю операцію здійснює
функція fpassthru ():

int fpassthru (int fp);

Ця функція виконує читання з поточної позиції в відкривається файлі і до його
кінця, після чого вона закриває файл. При вдалому завершенні повертає true, в разі
невдачі - false.

Може не виникнути необхідність виводити весь файл. Можливо, нам
знадобиться прочитати тільки частина даних, для використання їх на нашій сторінці. Для цієї мети в Рhp є кілька функцій.

Для читання заданої кількості символів з файлу, що відкривається, можна
скористатися функцією fread ():

string fread (int fp, int length);

Функція читає рядок довжиною length символів з файлу з дескриптором fp.
приклад:

Так само для читання даних з файлу застосовуються функції fgetc (), fgets () і
fgetss ()

string fgets (int fp, int length); string fgetss (int fp, int length);

Функція fgetc () виробляє зчитування одного символу.

Функція fgets () повертає рядок з (length-1) символів. Читання завершується,
якщо буде досягнуто символ перекладу рядка або кінець файлу.

Функція fgetss () ідентична fgets (), але все теги html видаляються з рядка, але
враховуються в довжині рядка length.

При помилку ці функції повертають false.

Також, для читання вмісту файлу можна використовувати функцію file (),
повертає вміст файлу у вигляді масиву. Кожен рядок файлу представляється у вигляді елемента масиву:

array file (string filename);

Функція приймає в якості аргументів дескриптор файлу, а рядок з ім'ям
файлу.

Для запису в файл використовуються функції fputs () і fwtite ().

int fputs (int fp, string string, [int length]); int fwrite (int fp, string
string, [int length]);

Якщо останній параметр не вказано, то здійснюється запис всього рядка.
Приклад (облік відвідувань з занесенням даних про дату відвідування і ip відвідувача в файл
і виведення на екран повідомлення про номер відвідування):

Існує також кілька функцій для управління поточною позицією у файлі.
Вони полегшують вільне переміщення по файлу.

Функція rewind () встановлює поточну позицію в початок файлу, дескриптор
якого вона приймає в якості аргументу.

Може виникнути необхідність визначити поточний стан в файлі. Для цієї
мети служить функція ftell ()

int ftell (int fp);

За допомогою функції fseek () можна переміститися в задану позицію.

int fseek (int fp, int offset [, int whence]);

Основними аргументами функції є дескриптор файлу і значення заданої
позиції від початку файлу. Наприклад, з допомогу функції ftell () можна організувати
переміщення в задану позицію:

fseek ($ fp, ftell ($ fp) +10); // перехід на 10 позицій вперед від поточної

Але цього ж ефекту в php4 можна домогтися без використання функції ftell (),
так як в функції fseek () з'явився необов'язковий аргумент, який визначає
спосіб переміщення на задану позицію: seek_set - відраховує значення від початку
файлу (за замовчуванням); seek_cur - відраховує значення від поточної позиції; seek_end
- додає значення offset до кінця файлу.

Той же приклад в php4 набуде вигляду:

fseek ($ fp, 10, seek_cur);

Часто виникають ситуації, коли треба перевірити стан покажчика
щодо кінця файлу. Для цього застосовується функція feof (), яка повертає
true, якщо досягнуто кінець файлу і false, якщо кінець файлу не досягнуть.

Можливості php по роботі з файлами не обмежуються наведеними тут
функціями. З повним описом функцій для роботи з файловою системою можна
ознайомиться на офіційному сайті php в розділі php: manual: filesystem functions.

Схожі статті