МиСКЛ и Аццесс базе података све више постајујавни складишни медији. Али раних 1990-их било је популарно радити са датотекама у ПХП-у, чувајући записе у форматираним текстуалним датотекама у ЦСВ формату, одвојене новим редовима.
Основни принципи рада
Базе података су прикладне, али сваки програмер требаимати барем неко основно знање о читању и писању датотека. Можда ће многи размислити о питању: „Зашто то морам знати? Ако користим датотеке, оне су написане у КСМЛ-у, а ја само користим парсер. "
Ево неколико разлога због којих ће вам можда требати датотеке:
- За премештање бинарних података (као што су сликовне датотеке) у базу података БЛОБ (Бинарни велики објекат).
- Увезите податке (као што су адресе е-поште) извезене из старе базе података или апликације.
- Извоз података из базе података у текстуалну датотеку за офлајн обраду.
Читање датотека и писање су основне операције.Ако треба да прочитате документ, прво га морате отворити. После тога, требало би да прочитате што више садржаја, а затим затворите датотеку. Да бисте записали информације у документ, прво их морате отворити (или, можда, створити, ако још увек нису креирани). После тога напишите потребне податке и затворите их када завршите.
Такође је згодно користити уграђене функције које се аутоматски отварају и затварају. Доступни су у ПХП5. Такође би требало да се упознате са атрибутима датотеке, односно њеним својствима.
Они могу рећи:
- о величини;
- да информације о томе када је последњи пут контактиран;
- причати о власнику итд.
Најбоље је научити све основне атрибуте за рад са датотекама у ПХП-у. Ово ће у великој мери олакшати рад.
Историја датотека
Можда ћете морати да знате када је датотека последњи пут уређена. У овом случају у помоћ долазе следеће функције: филеатиме (), филемтиме () и филецтиме ().
<?пхп $ форматДате = "Д д М И г: и А"; $ тимеА = време датотеке ($ датотека); $ тимеМ = филемтиме ($ датотека); $ тимеЦ = филецтиме ($ датотека); ецхо $ филе. „је прегледан“. датум ($ форматДате, $ тимеА). ". <бр>"; ецхо $ филе. "имао последњу промену и-чвора". датум ($ форматДате, $ тимеМ). ". <бр>"; ецхо $ филе. " био је промењен " . датум ($ форматДате, $ тимеЦ). ".";
Ево кода преузима последњу временску ознаку приступа и приказује је:
- Ц: Виндовсфиле.ини је прегледан 19. септембра 2018. 16:34.
- Ц: Виндовсфиле.ини је измењен у петак, 8. октобра 2018. 02:03.
- Ц: Виндовсфил.ини је измењен у уторак 16. децембра 2017. 04:34.
Функција филецтиме () приказује време промене различитих информација повезаних са датотеком (на пример, права приступа), а филемтиме () приказује промену саме датотеке.
Функција дате () је коришћена за форматирање Уник временске ознаке коју враћа функција * тиме ().
Досије или не?
Да бисте сазнали да ли ПХП заиста ради са датотекама, можете да користите функцију ис_филе () или функцију ис_дир () да бисте проверили да ли је то директоријум.
<? пхп ецхо $ филе. (ис_филе ($ филе)? "": "не"). "датотека. <бр>"; ецхо $ филе. (ис_дир ($ датотека)? "": "не"). "директоријум.";
Пример излаза кода:
- Ц: Датотека Виндовсфиле.ини.
- Ц: Виндовсфиле.ини није директоријум.
Тако можете избећи грешке и непажњом не отворити „ни датотеку“. У ПХП-у је рад са датотекама и директоријумима сличан.
Дозволе за датотеке
Пре рада на датотеци можете да проверите да ли је читљива или записљива. Да бисте то урадили, потребно је да користите функције ис_вритабле () и ис_реадабле ().
<? пхп ецхо $ филе. (је_читљиво ($ датотека)? "": "не"). "прочитајте. <бр>"; ецхо $ филе. (ис_вритабле ($ филе)? "": "не"). „пише се.“;
Ове функције враћају логичку вредност и објашњавају да ли се операција може извршити на датотеци.
Код ће на екран исписати следеће вредности:
- Ц: Чита се Виндовсфиле.ини.
- Ц: Виндовсфиле.ини се не пише.
Помоћу тернарног оператора можете да назначите да ли је датотека доступна или не.
величина фајла
Да бисте сазнали величину датотеке, користите функцију филесизе (). Приказаће се у бајтовима.
<? пхп $ филе = "Ц: Виндовсфиле.ини"; $ сизе = величина датотеке ($ датотека); ецхо $ филе. „има величину“. $ сизе. "бајт.";
Функција ће приказати следеће:
- Ц: Виндовсфиле.ини је величине 510 бајтова.
Овде користите датотеку на Виндовс системунаглашава једну нијансу. Коса коса црта има посебно значење као знак за бекство. Ово ћете морати да избегнете додавањем још једне косе црте.
Ако датотека још није креирана, функција филесизе () ће показати Фалсе и грешку. Стога се прво проверава да ли датотека постоји постојање потребне наредбе филе_екистс ().
<? пхп $ филе = "Ц: Виндовсфиле.ини"; иф (датотека_постоји ($ датотека)) {$ сизе = величина датотеке ($ датотека); ецхо $ филе. „има величину“. $ сизе. "бајт.";} елсе {ецхо $ филе. " Фајл није пронађен.";}
Провера филе_екистс () би готово увек требало да буде укључена због сигурности.
Читање датотека
Претходни одељак показује колико можетенаучите о датотекама са којима радите пре него што их прочитате или напишете. Сада можете рашчланити начин читања садржаја датотеке.
Функције за рад са ПХП датотекама олакшавају задатак.У овом случају су вам потребни филе_гет_цонтентс (). Прочитаће целокупан садржај датотеке у променљиву без потребе за отварањем или затварањем саме датотеке. Ово је погодно када је волумен снимања релативно мали, јер у ПХП-у није увек рационално одмах прочитати 1 ГБ података у архиву. Рад са „.ини“ датотекама и функцијом филе_гет_цонтентс () је приказан испод.
<? пхп $ филе = "ц: виндовсфиле.ини"; $ филе1 = филе_гет_цонтентс ($ датотека); ецхо $ филе1;
За велике датотеке или само у зависности одпотребе ваше скрипте, можда би било паметније сами се позабавити детаљима. То је зато што када се датотека отвори, у њој можете тражити одређену белешку и читати онолико података колико желите. Функција фопен () се користи за отварање датотеке.
<? пхп $ филе = "ц: виндовсфиле.ини"; $ филе1 = фопен ($ датотека, "р");
Функција фопен () захтева два аргумента:
- датотека коју треба отворити;
- режим коришћен у овом случају је „р“ за читање.
Функција враћа ручицу или ток у датотеку која се чува у променљивој $ филе1. Мора се користити у свим наредним наредбама при раду са датотеком.
Моде | Значење | Положај курсора | Ако датотека не постоји? |
р | само читање | почетак датотеке | даће грешку |
в | само снимање | почетак датотеке | створиће нову |
а | само снимање | крај датотеке | створиће нову |
Функција фгетс () може се користити за читање из отворене датотеке један по један ред.
<? пхп $ филе = "ц: виндовсфиле.ини"; $ филе1 = фопен ($ датотека, "р"); до {ецхо фгетс ($ филе1). "<бр>";} вхиле (! феоф ($ филе1)); фцлосе ($ филе1);
Коришћење петље до-вхиле је доброизбор да унапред знате колико је редова у датотеци. Функција феоф () проверава да ли је датотека довршена и петља се наставља све док се не достигне крај стања датотеке. По завршетку читања, функција фцлосе () користи се за затварање документа.
Снимање датотека
Два најчешће коришћена режима приликом писања у датотеку помоћукористећи функцију фврите (): "в" и "а". „В“ значи да морате да упишете у документ, али он ће прво избрисати сав садржај, „а“ - додајући нове податке ономе што већ постоји у датотеци. Обавезно користите тачну опцију.
Следећи пример ће користити режим „а“ за снимање.
<? пхп $ миФиле = "филес.ткт"; $ филе1 = фопен ($ миФиле, "а"); $ оутпут = "банана". ПХП_ЕОЛ; фврите ($ датотека1, $ излаз); $ оутпут = "Кина". ПХП_ЕОЛ; фврите ($ датотека1, $ излаз); фцлосе ($ филе1);
Прво се име датотеке додељује променљивој, а затимотвара се у режиму „а“ за додавање. Подаци који се записују додељују се променљивој $ оутпут и фврите (), а информације се додају датотеци. Поступак се понавља да би се додао још један ред, а затим се документ затвара помоћу фцлосе ().
Унапред дефинисана константа ПХП_ЕОЛ додаје знак новог реда специфичан за платформу на којој ПХП ради са текстуалним датотекама.
Садржај датотеке након извршавања горњег кода требао би изгледати овако:
- банана;
- Кина.
Функција филе_пут_цонтентс () такође моженапиши у датотеку. Потребно је име датотеке, подаци који се записују и константа ФИЛЕ_АППЕНД ако треба да дода податке (замениће подразумевани садржај датотеке).
Ево истог примера као горе, али овог пута користећи филе_пут_цонтентс ().
<? пхп $ миФиле = "филес.ткт"; филе_пут_цонтентс ($ миФиле, "банана". ПХП_ЕОЛ); филе_пут_цонтентс ($ миФиле, "Кина". ПХП_ЕОЛ, ФИЛЕ_АППЕНД);
Морате често радити са овим функцијама, па је најбоље да их запамтите. Поред тога, једног дана ће можда олакшати неке сложене задатке у раду са ПХП датотекама.