Page 81 - 4636
P. 81
Функція feof() приймає один параметр - дескриптор файлу. Вона повертає значення true, якщо
покажчик файла знаходиться у кінці файлу. feof означає File End of File. ("Файл : кінець файлу ").
Отже, зчитування продовжується до дати, поки не буде досягнутий символ EOF.
3.3 Читання файлу
Порядкове зчитування : функції fgets(), fgetss() і fgetcsv().
Якщо для зчитування з файлу використовується функція fgets():
$order = fgets ($fp, 999) ;
Ця функція використовується для читання з файлу рядків по одному за раз. У даному випадку
зчитування буде виконуватися до тих пір, поки не трапиться символ нового рядка (\n), символ EOF або
з файлу не будуть прочитані 998 байт. Максимальна довжина рядка, що зчитується, дорівнює
зазначеній довжині мінус 1 байт.
Існує багато різних функцій, які використовують для читання файлів. Функція fgets() корисна
при роботі з файлами, що містять звичайний текст, який потрібно обробляти частинами.
Різновидом функції fgets() є функція fgetss(), що має такий прототип:
string fgetss ( resource fp, int length, string [allowable_tags]) ;
Ця функція багато в чому подібна функції fgets() і відрізняється від неї тільки тим, що вона
видаляє будь РНР- і HTML - дескриптори, виявлені в рядку.
Якщо ви хочете зберегти у файлі якісь конкретні дескриптори, їх слід розмістити в рядок
дозволених дескрипторів allowable_tags . Функцію fgetss() слід використовувати для
досягнення більшої безпеки під час читання файлу, записаного кимось іншим або якщо файл містить
дані, введені користувачем. Включення у файл HTML - коду без будь-яких обмежень може призвести
до порушення ретельно спланованого форматування. Відсутність обмежень на наявність у файлі PHP -
коду може надати зловмисному користувачеві практично повну свободу дій на сервері.
Функція fgetcsv() - ще один різновид функції fgets(). Вона має наступний прототип :
array fgetcsv(resource fp, int length [, string delimiter [, string
enclosure]]) ;
Ця функція розбиває рядки файлів при використанні деякого символу як роздільник, наприклад,
табуляції (як пропонувалося раніше ) або комою (яка зазвичай застосовується в електронних таблицях
та інших додатках). Якщо потрібно відновити змінні замовлення окремо, а не мати справу з рядком
тексту, слід використати функцію fgetcsv(). Вона викликається приблизно так само, як і функція
fgets(), але їй необхідно передати роздільник, який служить роздільником полів. Наприклад,
оператор
$order=fgetcsv($fp, 100, "\t");
вилучає рядок з файлу і розділяє його при кожному виявленні символу табуляції (\t). Отримані при
цьому рядки розміщуються у масив (у даному прикладі це масив $order).
Параметр довжини length повинен бути більшим від довжини рядка файлу, що зчитується,
вираженої в символах.
Параметр вкладення enclosure використовується для опису символів, в які розміщуються кожне
поле в рядку. Якщо ці символи не задані, за замовчуванням приймається символ " (подвійні лапки) .
Читання всього файлу: функції readf ile(), fpassthru() і file()
Щоб не читати по одному рядку з файлу можна за раз прочитати весь файл як єдине ціле. Існують
чотири способи виконання такого зчитування.
Перший спосіб передбачає використання функції readfile()
readfile ("$DOCUMENT_ROOT /. ./orders/orders.txt") ;
78