Читання даних з файлу
Якщо ми хочемо прочитати дані з існуючого файлу, однієї функції fopen (). як і у випадку з записом даних. недостатньо. Вона лише повертає покажчик на відкритий файл, але не зчитує жодного рядка з цього файлу. Тому для того, щоб прочитати дані з файлу, потрібно скористатися однією зі спеціальних функцій: file, readfile. file_get_contents. fread. fgets і т.п.
функція fread
Ця функція здійснює читання даних з файлу. Її можна використовувати і для читання даних з бінарних файлів, не побоюючись їх пошкодження. Синтаксис fread () такий:
В результаті роботи функція fread () повертає рядок зі ліченої з файлу інформацією.
Як ви помітили, в цій функції параметр довжина - обов'язковий. Отже, якщо ми хочемо вважати весь файл в рядок, потрібно знати його довжину. PHP може самостійно обчислити довжину зазначеного файлу. Для цього потрібно скористатися функцією filesize (ім'я файлу). У разі помилки ця функція поверне false. На жаль, її можна використовувати тільки для отримання розміру локальних файлів.
Приклад 9.4. Прочитаємо вміст файлу my_file.html
Приклад 9.4. Використання функції fread ()
Для того щоб вважати вміст бінарного файлу, наприклад зображення, в таких системах, як Windows, рекомендується відкривати файл за допомогою прапора rb або йому подібних, що містять символ b наприкінці.
Функція filesize () кешируєт результати своєї роботи. Якщо змінити вміст файлу my_file.html і знову запустити наведений вище скрипт, то результат його роботи не зміниться. Більш того, якщо запустити скрипт, який зчитує дані з цього файлу за допомогою іншої функції (наприклад, fgetss), то результат може виявитися таким, як якби файл не змінився. Щоб цього уникнути, потрібно очистити статичний кеш, додавши в код програми команду clearstatcache ();
функція fgets
За допомогою функції fgets () можна вважати з файлу рядок тексту. Синтаксис цієї функції практично такий же, як і у fread (). за винятком того, що довжину зчитується рядки вказувати необов'язково:
Приклад 9.5. Використання функції fgets ()
Обидві функції, fread () і fgets (). припиняють зчитування даних з файлу, якщо зустрічають кінець файлу. У PHP є спеціальна функція, що перевіряє, чи дивиться покажчик позиції файлу на кінець файлу. Це булева функція feof (). в якості параметра якої передається покажчик на з'єднання з файлом.
Наприклад, ось так можна вважати всі рядки файлу my_file.html:
функція fgetss
Існує різновид функції fgets () - функція fgetss (). Вона теж дозволяє зчитувати рядок із зазначеного файлу, але при цьому видаляє з нього все що зустрілися html-теги, за винятком, можливо, деяких. Синтаксис fgetss () такий:
Зверніть увагу, що тут аргумент довжина обов'язковий.
Приклад 9.6. Нехай у нас є файл my_file.html такого змісту:
Виведемо на екран всі рядки файлу my_file.html. видаливши з них усі теги, крім і :
Приклад 9.6. Використання функції fgetss ()
В результаті роботи цього скрипта одержимо:
Тихіше їдеш далі будеш
функція fgetc
Природно, якщо можна зчитувати інформацію з файлу через підрядник, то можна зчитувати її і посимвольний. Для цього призначена функція fgetc (). Легко здогадатися, що синтаксис у неї наступний:
Ця функція повертає символ з файлу, на який посилається вказівник на файл, і значення, що обчислюється як FALSE. якщо зустрінутий кінець рядка.
Ось так, наприклад, можна вважати файл по одному символу:
Насправді для того щоб прочитати вміст файлу, відкривати з'єднання з ним за допомогою функції fopen () зовсім не обов'язково. У PHP є функції, які дозволяють робити це, використовуючи лише ім'я файлу. Це функції readfile (), file () і file_get_contents (). Розглянемо кожну з них докладніше.
функція readfile
Функція readfile () зчитує файл, ім'я якого передано їй як параметр ім'я файлу, і виводить його вміст на екран. Якщо додатковий аргумент use_include_path має значення TRUE. то пошук файлу з заданим ім'ям проводиться і по директоріях, що входять в include_path.
У програму ця функція повертає число лічених байтів (символів) файлу, а в разі помилки - FALSE. Повідомлення про помилку в цій функції можна придушити оператором @.
Приклад 9.7. Наступний скрипт виведе на екран вміст файлу my_file1.html і розмір цього файлу. якщо він існує. В іншому випадку виведеться наше повідомлення про помилку - рядок "Error in readfile".
Приклад 9.7. Використання функції readfile ()
Відразу ж виводити вміст файлу на екран не завжди зручно. Часом потрібно записати інформацію з файлу в змінну, щоб в подальшому призвести з нею будь-які дії. Для цього можна використовувати функцію file () або file_get_contents ().
функція file
Функція file () призначена для зчитування інформації з файлу в змінну типу масив. Синтаксис у неї такий же, як і у функції readfile (). за винятком того, що в результаті роботи вона повертає масив:
Що за масив повертає ця функція? Кожен елемент даного масиву є рядком у файлі, інформацію з якого ми зчитуємо (його ім'я задано аргументом имя_файла). Символ нового рядка теж включається в кожен з елементів масиву. У разі помилки функція file (). як і всі вже розглянуті, повертає false. Додатковий аргумент use_include_path знову ж визначає, шукати чи ні даний файл в директорії include_path. Відкривати видалені файли за допомогою цієї функції теж можна, якщо не заборонено сервером. Починаючи з PHP 4.3 робота з бінарними файлами за допомогою цієї функції стала безпечною.
Наприклад, у нас є файл my_file.html такого змісту:
Прочитаємо його вміст за допомогою функції file ():
В результаті на екран буде виведено наступне повідомлення:
функція file_get_contents
У версіях PHP починаючи з 4.3 з'явилася можливість зчитувати вміст файлу в рядок. Робиться це за допомогою функції file_get_contents (). Як і дві попередні функції, як параметри вона приймає значення імені файлу і, можливо, вказівка шукати його в директоріях include_path. Для порядку все одно наведемо її синтаксис:
Ця функція абсолютно ідентична функції file (). тільки повертає вона вміст файлу у вигляді рядка. Крім того, вона безпечна для обробки бінарних даних і може зчитувати інформацію з віддалених файлів, якщо це не заборонено настройками сервера.
Зверніть увагу на додаткові ПОСИЛАННЯ
Если вас цікавить.
У лекції обговорюються питання, пов'язані зі створенням файлів, читанням даних з файлу, видалення файлу, а також перевірка наявності файлу на сервері. (Функції fopen, fwrite, fclose, file, fget, unlink, file_exists.) Приклад - завантаження файлу на сервер за допомогою web-інтерфейс.
PHP (вимовляється пі-ейч-пі) - скриптова мова програмування, створена для генерації HTML-сторінок на веб-сервері і роботи з базами даних. Нині підтримується переважною більшістю представників хостингів. Входить в LAMP - «стандартний» набір для створення веб-сайтів.