Page 80 - 4636
P. 80

параметр handle, до того часу, поки не досягне кінця рядка або запише length байт, залежно від
        того, що відбудеться раніше.
           Довжину рядка в РНР можна отримати за допомогою вбудованої функції strlen():
           fwrite($fp, $outputstring, strlen($outputstring));
           Третій  параметр  може  знадобитися  при  запису  у  бінарному  режимі,  оскільки  він  допомагає
        уникнути деяких проблем несумісності між платформами.
           Формати файлів
           У процесі створення файлу даних, подібного на наш приклад, вибір формату, в якому дані будуть
        зберігатися,  цілком  залежить  від  творця. (Але,  якщо  файл  даних  буде  використовуватися  в  іншому
        додатку, можливо, доведеться врахувати особливості інтерпретації даних у цьому додатку.)
           Запишемо рядок, який представляє один запис у нашому файлі даних:
           $outputstrinq =$date."\t".$tireqty." покрышек\t"
           .$oilqty." бутылокMacлa\t".$sparkqty." свечейзажигания\t\$"
           .$total."\t".$address."\n";
           У  цьому  простому  прикладі  кожний  запис  замовлення  зберігається  в  окремому  рядку  файлу.  У
        такому  випадку  як  простий  роздільник  записів  використовується  символ  нового  рядка.  Оскільки
        символи нового рядка невидимі, ми представляємо їх у вигляді керуючої послідовності "\n".
           Надалі поля даних будуть завжди записуватися в одному і тому ж порядку, а як роздільник полів
        використовується символ табуляції. Оскільки і цей символ невидимий, він також буде представлений
        керуючою  послідовністю  "\t".  За  роздільник  можна  використовувати  будь-яку  ознаку,  що  легко
        читається.
           Роздільником, або обмежувачем, повинен бути підрядок, який точно не траплятиметься у вихідних
        даних,  інакше  доведеться  піддати  вихідні  дані  додатковій  обробці  з  метою  видалення  або
        перетворення всіх наявних обмежувачів. Припустимо, що ніхто не буде вводити символи табуляції в
        майбутню форму замовлення. Помістити символи табуляції або нового рядка в однорядкове HTML-
        поле введення хоч і важко, але аж ніяк не неможливо.
           Використання  спеціального  роздільника  полів  спрощує  поділ  даних  на  окремі  змінні  під  час  їх
        читання. Поки ж кожне замовлення ми будемо розглядати як окремий рядок.
           Після обробки декількох замовлень вміст файлу може виглядати як в лістингу 3.1

           Лістинг 3.1. Файл orders.txt - приклад вмісту файлу замовлень








           Закриття файлу
           Після  завершення  використання  файлу  його  слід  закрити.  Для  цієї  мети  служить  функція
        fclose() ("file close" - " закрити файл"), виклик якої показаний нижче:
           fclose($fp);
           Ця  функція  повертає  значення  true  у  випадку  успішного  закриття  файлу  і  false,  якщо  щось
        цьому завадило. Імовірність помилки при цьому набагато менша, ніж при відкритті файлу, тому можна
        не здійснювати перевірку результату її виконання.
           Функція feof()
           Якщо використовується цикл while для читання з файлу до того часу, поки не буде досягнутий
        кінець файлу, цикл while перевіряє, чи досягнуто кінець файлу, за допомогою функції feof() :
           while (!feof ($fp))

                                                            77
   75   76   77   78   79   80   81   82   83   84   85