PHP: PHP faylini o'qing. PHP da fayllar bilan ishlash: o'qish, tavsiyalar yozish. Php-da fayllar bilan ishlash: yozish, yozish, o'qish Php-ni qanday ko'chirish

Golovna / 2 Ajoyib o'quvchilar

yangilashni to'xtating: 1.11.2015

Ko'proq mov dasturlash kabi, PHP ma'lumot to'plash usullaridan biri kabi fayllar bilan ishlashni qo'llab-quvvatlaydi.

Fayllarni o'qish va yozish

Fayllarni ochish va yopish

Fayllarni ochish uchun PHP da fopen() funksiyasi mavjud. Siz shunday qilishingiz mumkin: resurs fopen (string $ fayl nomi, string $ rejimi). Birinchi parametr $filename faylga yo'l, ikkinchisi esa ko'rsatish rejimidir. Fayl turining qiymatini belgilash kerak, qaysi parametr quyidagi qiymatni olishi mumkin:

    "r": fayl endi o'qish uchun ko'rsatilmaydi. Agar fayl mavjud bo'lmasa, "false" ni yoqing

    "r+": faylni endi o'qish va yozish mumkin emas. Agar fayl mavjud bo'lmasa, "false" ni yoqing

    "w": fayl yozish uchun ko'rsatiladi. Agar bunday fayl allaqachon mavjud bo'lsa, uning ustiga yoziladi, agar bo'lmasa, u yaratiladi

    "w+": fayl o'qish imkoniyati bilan yozish uchun ochiladi. Agar bunday fayl allaqachon mavjud bo'lsa, uning ustiga yoziladi, agar bo'lmasa, u yaratiladi

    "a": fayl yozish uchun ko'rsatiladi. Agar bunday fayl allaqachon mavjud bo'lsa, ma'lumotlar faylning oxirigacha yoziladi va eski ma'lumotlar o'chiriladi. Agar fayl mavjud bo'lmasa, u yaratiladi

    "a+" : fayl o'qish va yozish uchun ochilmoqda. Agar fayl allaqachon ishlatilayotgan bo'lsa, ma'lumotlar faylning oxiriga qo'shiladi. Agar fayl topilmasa, u yaratiladi

Fopen funksiyasining natijasi fayl tutqichidir. Bu deskriptor fayl operatsiyalari va yopish uchun yozilgan.

Ish tugagandan so'ng, fayl qo'shimcha fclose() funksiyasi yordamida yopilishi kerak, chunki u fayl deskriptorini parametr sifatida qabul qiladi. Masalan, agar siz faylni yopmoqchi bo'lsangiz:

$fd = fopen("form.php", "r") yoki die("faylni ochib bo'lmadi"); fclose($fd);

Or die("kechirim matni") konstruksiyasi robotga afv etish haqidagi eslatmani ko'rsatish uchun robotga skript biriktirish imkonini beradi, chunki fopen funksiyasi faylni ocha olmadi.

Faylni o'qish

Faylni o'qish uchun siz bir qator funktsiyalarni tezlashtirishingiz mumkin. Qatorni o'qish uchun fgets() funksiyasi fayl deskriptorini olish va bir qatorni aylantirish uchun ishlatiladi. Keling, butun faylni ketma-ket ko'rib chiqaylik:

Teri tayoqchasi bilan fgets() PHP indikatorni ishlov berilgan qatorning oxiriga qo'yadi. Fayl tugallanishini tezlashtirish uchun feof() funksiyasi fayl tugallangandan so'ng rost bo'lish uchun ishlatiladi. Faylning oxirigacha fgets() funksiyasini to'xtatishimiz mumkin.

Fayl yana o'qilmoqda

Bunday holda biz faylni ochishimiz, identifikatorni olib tashlashimiz va keyin faylni yopishimiz shart emas.

Blok o'qish bo'yicha bloklash

Qo'shimcha fread() funktsiyasi uchun fayldan bayt sonini o'qish uchun yon o'qishni amalga oshirish ham mumkin:

Fread() funksiyasi ikkita parametrni oladi: o'qilayotgan fayl uchun tutqich va o'qiladigan baytlar soni. Blokni o'qiyotganda faylning indikatori oxirgi blokda to'xtaydi. Shuningdek, feof() funksiyasi yordamida siz tugallangan faylni tekshirishingiz mumkin.

Faylga yozing

Faylga yozish uchun fwrite() funksiyasi yoziladi, shunday qilib faylga qator yoziladi:

Xuddi shunday, boshqa fputs () funktsiyasi ishlaydi:

Fayl indikatori bilan ishlash

Faylni "w" rejimida o'qish yoki yozish uchun ochganda, fayldagi papka kobga joylashtiriladi. O'qiyotganda danih PHP fayl indikatorini ma'lumotlar blokining oxiriga o'tkazing. Biroq, biz faylni indikator bilan qo'lda tekshirishimiz va uni to'g'ri joyga o'rnatishimiz mumkin. Funktsiyadan kim uchun foydalanish kerak fseek, rasmiy ta'rif bo'lishi mumkin:

int fseek (resurs $handle , int $offset [, int $whence = SEEK_SET ])

$handle parametri faylga tutqichni bildiradi. $offset parametri o'qish/yozishni boshlash uchun fayl hajmining baytdagi o'lchamidir. Uchinchi majburiy bo'lmagan parametr ofsetni o'rnatish usulini belgilaydi. Vin uchta qiymatni qabul qilishi mumkin:

    SEEK_SET : qulflash qiymati, faylni boshlash uchun urug'ni ofset baytlariga o'rnating

    SEEK_CUR : faylning oqim pozitsiyasining yuqori qismidagi ofset baytlari uchun ofsetni o'rnating

    SEEK_END : ofsetni fayl oxiridagi ofset baytiga kiriting

Agar indikator uzoqroqqa o'rnatilgan bo'lsa, fseek() funksiyasi 0 ga, o'rnatilmagan bo'lsa -1 ga aylanadi.

Buttstock vikoristannya funktsiyalari:

$fd = fopen("salom.txt", "w+") yoki die("faylni ochib bo'lmadi"); $str = "Salom dunyo!"; // qator yozish fwrite($fd, $str); // kob fseek ustiga qator yozish ($ fd, 0); // Cob fwrite ($fd, "Oink") da fayl indikatorini o'rnatamiz; // kob fseek bo'yicha qator yozish ($ fd, 0, SEEK_END); // Oxirgi indikatorni o'zgartiramiz fwrite($fd, $str); // yana bitta qator yozing, masalan fclose($fd);

16,5 ming

Aslida PHP faylni ochish katta muammo emas. Agar siz tulkining o'rtasida bo'lsangiz, pivo raqsini ichish muhimroqdir. Ale shunday kamroq zatyaty dasturlari deb o'ylayman. Yangi boshlanuvchilar uchun esa fayllar bilan ishlash uchun php ning barcha imkoniyatlari haqida gapiraylik:

php fayllari

Filey z php kengaytmalari xuddi shu nomdagi dasturlashim bilan imlo kodini o'zimdan olib tashlash. Boshqa tillar nuqtai nazaridan, php mening server dasturlashimdir. Tobto server uchun vykonuetsya. Shuning uchun, mijoz mashinasida kodni sozlash uchun siz mahalliy serverni o'rnatishingiz mumkin.

PHP fayllari bilan ishlash uchun ular buzilgan maxsus qo'shimchalar- dasturiy ta'minot muharrirlari. Eng katta kengaytmalar:

  • Dreamweaver.
  • Tahrirlash.
  • Eclipse PHP ishlab chiqish.
Php-ga asoslangan saytlarni yaratishda sizga dastur kodining boshqa versiyasi kerak bo'lishi mumkin. Bunday hollarda, boshqa faylda mavjud bo'lgan tayyor echimni qo'lda qo'shing. Include konstruktsiyasi kim uchun yutib olinishi kerak. í Sintaksis:

fayl nomini o'z ichiga oladi

Ulanish misoli:

Ulanish uchun fayl:


Qo'shimcha talab qilinadigan konstruktsiyaga ega faylni ham qo'shishingiz mumkin. Qo'shish ko'rinishida u dastur kodi yozilgunga qadar faylni o'z ichiga oladi. Kodda talab yordami uchun siz ushbu faylga faqat bir qadam borishingiz mumkin. Qayta murojaat qilganingizda, tizim global afv haqidagi bildirishnomalarni ko'radi va dasturni ishga tushiradi.

Dizayn bir soatdan ko'proq dasturlash uchun plaginni o'z ichiga oladi. php faylini o'qish juda ko'p. Afv etish to'g'risida oqlanish vaqtida unga oldindan eslatma berilishi ehtimoli ko'proq bo'ladi va kod keyingi qatordan davom etadi.

Fayllarni ochish va yopish

php da fayllar bilan barcha operatsiyalar quyidagi bosqichlarda ko'rsatilgan:

  • Faylni ochish;
  • Birgalikda tahrirlash;
  • Faylni yoping.

Faylni ochish uchun fopen() funksiyasidan foydalaniladi. í Sintaksis:

int fopen(string fayl nomi, string rejimi [, int use_include_path])

Qabul qilingan dalillar:

  • string fayl nomi - yangisiga mutlaq yo'l bo'lgan fayl nomi. Agar faylga yo'l ko'rsatilmagan bo'lsa, u holda oqim katalogi uchun qidiruv amalga oshiriladi. Fayl mavjudligi uchun tizim kechirim haqidagi bildirishnomalarni taqdim etadi. Butt:

  • string rejimi - faylni o'qish rejimini belgilang. Argument tomonidan qabul qilingan qiymatlar:
  • r - faylni endi o'qib bo'lmaydi, fayl indikatori kobga o'rnatilgan;
  • r+ – o‘qish va yozish uchun fayl;
  • w - yaratish yangi fayl rekord uchun ko'proq. Agar bunday nomga ega fayl allaqachon ishlatilgan bo'lsa, yangisi avtomatik ravishda barcha ma'lumotlarni ko'radi;
  • w+ - yozish va o'qish uchun yangi fayl yaratish. Bunday fayldan foydalanganda ma'lumotlar yangisiga yoziladi;
  • a - yozish uchun yoziladigan fayl. Ko'rsatkich eslatma sifatida o'rnatiladi. Shunday qilib, PHP faylidagi yozuv kobdan emas, balki boshidan tozalanadi;
  • a+ – o‘qish rejimida faylga yozish va yozib olish. Ro'yxatdan o'tish rozpochnetsya z kintsya;
  • b - o'zingizning ikkilamchi ma'lumotlaringizdan qasos olish uchun fayl bilan ishlash rejimi (in ikki tomonlama tizim hisoblash). Tsey rejimi faqat mavjud operatsion tizim Windows.

fclose() funksiyasi faylga kirishni yopish uchun ishlatiladi. Sintaksis:

int fclose (int fayl) de int fayli - yopilishi kerak bo'lgan sayt uchun tutqich.

Teri o'qigandan so'ng, men faylni yozaman, bu funktsiyani yopish kerak. Aks holda, siz tanqidiy oqim, fayl uchun yaratilishlar bilan qolasiz. Va server shtammlarining dunyo miqyosidagi vitratlariga tse vede.

Butt:

Fayllarni o'qish va yozish

Uchun oddiy ifoda Butun fayl readfile() funksiyasi uchun juda mos keladi. í Sintaksis:

readfile (string fayl nomi), de string fayl nomi - string fayl nomi (deskriptor emas).


Xuddi shu faylni fpassthru() funksiyasi yordamida o'qish mumkin. Siz indikatorning oxirgi holatidan faylning oxirigacha ma'lumotlarni o'qiysiz. í Sintaksis:

int fpassthru (int fayli)

Funksiya bilan ishlash uchun faylni ochish va yopish kerak. Butt:

Natija avvalgisiga o'xshaydi.

PHP da fayllar bilan ishlash funksiyalari bir nechta satr va belgilar boʻyicha oʻqish imkonini beradi:

  • string fgets (int fayli, int uzunligi)- Funktsiya uzun uzunlikdagi qatorni o'qiydi. Butt:

  • string fread (int fayli, int uzunligi)- Funktsiyaga ko'ra, u oldingi bilan bir xil.

Matnli ma'lumotlarni yozish uchun fayl ikkita bir xil funktsiyaga ega:

  • int fputs (int fayl, string string [, int length ])
  • int fwrite (int fayl, string string [, int length ])

Funktsiyalar int fayliga int uzunligigacha belgilangan qator qatorini yozadi ( neob'til argumenti). Butt:

Fayllarni yaratish va o'chirish

PHP faylini yaratish uchun siz fopen() funksiyasini "w" yoki "w+" kirish rejimi bilan burishingiz mumkin. Yoki touch() funksiyasi. U faylni o'zgartirish uchun soatni o'rnatadi. Elementning mavjudligi uchun shukanim im'yom yogo yaratiladi. í Sintaksis.

Fopen, fclose, feof, fgets, fgetss va fscanf funksiyalarini tanlash haqida

Keling, barcha imkoniyatlarni bekor qilaylik

Eng muvaffaqiyatli robotlardan biri zamonaviy til PHP kabi dasturlashda juda ko'p imkoniyatlar mavjud. PHP Perl filmidagi "Men qanday o'sishni bilaman" shioriga bemalol mos kelishi mumkin, ayniqsa fayllarni qayta ishlashda. Ammo arzon mushuklarning ko'pligi bilan siz oziq-ovqat olishingiz mumkin, chunki ular uchun ishlash yaxshiroqdir. Shubhasiz, bu to'g'ri, faylni qayta ishlashga nima qo'yganingizga qarab, zanjirda yotish kerak, shuning uchun filmning barcha imkoniyatlariga erishish bir soatga arziydi.

An'anaviy fopen usullari

Fopen usuli, ehtimol, so'nggi soatlarda C va C ++ dasturchilari, katta va kichik dunyoning parchalari va xuddi shu vositalarni biladiganlar uchun yaxshiroqdir, go'yo eski taqdirlarni cho'zish orqali ular sizning qo'lingizda edi. agar siz dasturlar bilan ishlagan bo'lsangiz. Ushbu usullarning har qandayida faylni ochish uchun fopen, maʼlumotlarni oʻqish funksiyasi va keyin 1-roʻyxatda koʻrsatilganidek, faylni yopish uchun fclose chaqiruvining standart protsedurasini bekor qilasiz.

Listing 1. fgets bilan yordam olish uchun faylni o'qish
$file_handle = fopen("mening faylim", "r"); while (!feof($file_handle)) ( $line = fgets($file_handle); echo $line; ) fclose($file_handle);

Agar siz ushbu funktsiyalar haqida ko'proq bilmoqchi bo'lsangiz, ularning ishlarini tahlil qilishga ruxsat bering. Siz haqiqatan ham quyidagi qisqartmalarni yutib olasiz:

  1. Faylni oching. $file_handle faylni o'zi oladi.
  2. Faylning oxiriga etib bormaganligingizga ishonch hosil qiling.
  3. Siz o'qigan teri qatorining oxirigacha faylni o'qishni davom eting.
  4. Faylni yoping.

Shuni yodda tutgan holda, men fayllar bilan ishlash uchun terini buzish funksiyasini ko'rib chiqaman.

fopen funktsiyasi

Fopen funksiyasi fayldan havolani tiklaydi. Men "insert link, "shards, crim open file, fopen urlni ochishi mumkin deyman:

$fh = fopen("http://127.0.0.1/", "r");

Ushbu dasturlar seriyasi taxmin qilingan tomondan havola yaratadi va uni mahalliy fayl kabi o'qishga imkon beradi.

Eslatma: Fopen ishlatadigan "r" parametri faylning faqat o'qish uchun ekanligini bildiradi. Fayldagi Oskylki yozuvlari ushbu maqolada ko'rib chiqilgan quvvat hisobiga kirmaydi, men parametrning barcha mumkin bo'lgan qiymatlarini bekor qilmayman. Tim bunga qarshi emas, siz "r" ni "rb" ga o'zgartirishingiz kerak, shunda siz o'zaro platformalar yig'indisi uchun DVD fayllaridan o'qishingiz mumkin. Quyida bu turdagi dumba ko'rsatilgan.

feof funktsiyasi

Feof buyrug'i faylning oxirigacha o'qilishi va qiymatning True (True) yoki False (bema'nilik) ekanligini aniqlaydi. Hover tsikli davom etmoqda, docklarga "mening faylim" fayli oxirigacha etib bo'lmaydi. Shuni yodda tutingki, feof ham noto'g'ri bo'ladi, chunki siz URL manzilini o'qiyapsiz va ulanish ulanish vaqtiga yo'naltirildi, o'qish uchun boshqa ma'lumotlar yo'q.

fclose funktsiyasi

1-listning o'rtasini o'tkazib yuboring va oxirigacha o'ting; fclose chi URL fayliga ulanishni yopadi fopen: URL fayliga ulanishni yopadi. Ushbu funktsiyadan so'ng siz endi fayl yoki rozetkadan o'qiy olmaysiz.

fgets funktsiyasi

Listing 1da qatorlar qatorini yoqsangiz, faylni qayta ishlash jarayonining markaziga o'tasiz: faylni vositachisiz o'qing. fgets funksiyasi birinchi dastur uchun siz tanlagan funksiyadir. U fayldan ma'lumotlar qatorini zahoplyuê qiladi va uni bir qatorga aylantiradi. Siz ma'lumotlarni kiritishingiz yoki uni boshqa usulda qayta ishlashingiz mumkin. Ro'yxat 1da ko'rsatilgan ilova butun faylga ega.

Agar siz bir qator ma'lumotlar hajmini saqlamoqchi bo'lsangiz, ba'zi amaliyotlar bilan, to'planadigan ma'lumotlar qatorining maksimal miqdorini saqlash uchun fgets-ga argument qo'shishingiz mumkin. Masalan, 80 ta belgidan iborat qatorni o'rnatish uchun quyidagi dastur kodini keltiring:

$string = fgets($file_handle, 81);

C qatorining oxiri ko'rsatkichi "\0" ni taxmin qiling va qiymatni yana bitta belgiga qo'ying, sizga haqiqatan ham kerak. Bachit kabi, uchli dumbada siz 81 ta yutib olasiz, xuddi sizga 80 ta belgi kerak bo'lganidek. Agar siz ushbu funktsiya uchun qatorning chegarasini belgilashingiz kerak bo'lsa, o'simlik belgisiga qo'shimchani qo'shish uchun yulduz qo'shing.

Funktsiya fread

fgets funktsiyasi faylni o'qish uchun juda ko'p funktsiyalardan biridir. Bu ko'pincha g'olib bo'lgan funktsiyalardan biridir, ko'p hollarda faylni qayta ishlashning satrlari eng oqilona bo'lib ko'rinadi. Haqiqatan ham, boshqa funktsiyalarni tarqatish mumkin. Bu sodir bo'lmadi, qator tahlili - kerakli narsalarni boshlamang.

Va bu erda biz freadga murojaat qilamiz. Fread funktsiyasi boshqa maqsadlarda ishlaydi, lekin fgets: u ikkita faylni o'qish uchun ishlatiladi (matn bilan to'planmaydigan va odamlar uchun o'qish oson bo'lgan fayllar uchun). "Qator" ni tushunish bo'laklari qo'sh fayllar uchun tegishli emas (ma'lumotlarning mantiqiy tuzilmalari qatorlarga o'xshamaydi), siz bayt sonini ko'rsatish uchun javobgarsiz, chunki o'qish kerak.

$fh = fopen("mening faylim", "rb"); $data = fread($file_handle, 4096);

Hovered fond 4096 bayt (4 KB) ma'lumotni o'qiydi. Iltimos, hurmat qiling, siz kiritgan qiymatdan qat'i nazar, fread 8192 bayt (8 KB) dan oshmaydi.

Faylning hajmi 8 KB dan oshmasligiga ruxsat bergan holda, pastda joylashgan dasturning bir qismi butun faylni bir qatorda o'qish uchun javobgardir.

$fh = fopen("mening faylim", "rb"); $ma'lumotlar = fread($fh, fayllar hajmi("mening faylim")); fclose($fh);

Faylni kattaroq qilib kengaytirish uchun siz qoldirilgan qismni o'qish uchun tsiklni o'zgartirishingiz kerak bo'ladi.

fscanf funktsiyasi

Qatorni qayta ishlashdan oldin burilsa, fscanf ham an'anaviy C fayl kutubxonasi funksiyasining davomchisi ekanligi muhim ahamiyatga ega.Agar siz bu haqda bilmasangiz, fscanf fayldagi o'zgartirish ma'lumotlar maydonlarini o'qiydi.

ro'yxat ($field1, $field2, $field3) = fscanf($fh, %s %s %s);

Formatlash qatorlari, ushbu funktsiyada yozish, PHP.net kabi boy dzherellarda tasvirlangan, shuning uchun men bu ma'lumotni bu erda takrorlamayman. Dosit qator formatlash ham gnuchky deb aytish. Bundan tashqari, funktsiya tomonidan aylantirilgan o'zgarishlarda qaysi maydonlar joylashtirilganligini taxmin qilishingiz kerak. (C filmi argument sifatida hidlanib ketdi.)

fgetss funktsiyasi

Fgetss funksiyasi an'anaviy fayllarni qayta ishlash funktsiyalaridan ajralib turadi va sizga PHP imkoniyatlari haqida yaxshiroq tasavvur beradi. Von pratsyuê on srazok fgets, ale v_dkidaê be-yak_ uning tomonidan namoyon bo'ldi HTML teglari abo PHP, zalishayuchi lisha "yalang'och" matn. Quyidagi HTML faylni ko'rib chiqing.

Listing 2. HTML fayl namunasi
Mening sarlavham

Agar siz "kelmaysiz" deb tushunmasangiz, unda siz kesmaslik uchun yolg'iz emassiz.

Keling, fgetss funktsiyasi orqali yoga o'tkazamiz.

Listing 3. fgetss wiki
$file_handle = fopen("mening faylim", "r"); while (!feof($file_handle)) ( echo = fgetss($file_handle); ) fclose($file_handle);

Chiqish ma'lumotlari sifatida qabul qiladigan eksa:

Mening sarlavham, agar tushunsangiz

fpassthru funktsiyasi

Fayldan ma'lumotlarni qanday o'qiganingizdan qat'i nazar, siz ma'lumotni ko'rish uchun standart kanaldan foydalanib, qo'shimcha fpassthru funksiyasidan foydalanib, boshqasiga ma'lumotlarni kiritishingiz mumkin.

fpassthru($fh);

Bu funksiya boshqalar uchun ma'lumotlarni ko'rsatishdir, shuning uchun ularni o'zgartirish bilan birga joylashtirishingiz shart emas.

Faylni chiziqli bo'lmagan qayta ishlash: fayl tomonidan o'zgartirish

Shubhasiz, yuqorida tavsiflangan funktsiyalar faylni ketma-ket o'qish imkonini beradi. Ko'proq katlamali fayllar kobda yoki oxirida faylning turli qismlariga ko'chirilishi mumkin. Buning uchun sizga fseek funksiyasi kerak.

fseek($fh, 0);

Dumba ko'rsatilgan joyda, kob fayliga qaytish kerak. Agar siz faylning yuqori qismiga o'tishni istamasangiz - aytaylik, bir kilobayt kifoya qiladi - shunchaki yozing:

fseek($fh, 1024);

PHP V4.0 dan boshlab, bir nechta boshqa variantlar ham mavjud. Misol uchun, agar siz oqim joyingizdan 100 bayt oldinga sakrashni istasangiz, keyingi kodni buzishingiz mumkin:

fseek($fh, 100, SEEK_CUR);

Xuddi shunday, yordam uchun 100 baytni orqaga qaytarish kerak:

fseek($fh, -100, SEEK_CUR);

Agar fayl tugashiga 100 bayt qolganda orqaga qaytishni istasangiz, SEEK_END yozing.

fseek($fh, -100, SEEK_END);

Yangi joyga etib borganingizdan so'ng, ma'lumotlarni o'qish uchun fgets, fscanf yoki boshqa funksiyadan foydalanishingiz mumkin.

Eslatma: Siz URL manzilini so'rash uchun fayl deskriptorlarini qidira olmaysiz.

Butun fayl

Keling, deklaratsiyani ko'rib chiqishga o'taylik noyob imkoniyatlar Fayllarni tahlil qilish uchun PHP: bir yoki ikki qatorda katta ma'lumotlar bloklarini tahlil qilish. Masalan, qanday qilib faylni olish va uning hammasini veb-saytingizga joylashtirish mumkin? Xo'sh, siz fgets halqasini sinab ko'rdingiz. Lekin qanday qilib oddiyroq bo'lishi mumkin? fgetcontents dan foydalanganda jarayon kulgili darajada sodda bo'lishi mumkin, chunki u butun faylni bir qatorga qo'yadi.

$mening_fayl = file_get_contents("mening faylim"); echo $my_file;

Agar eng yaxshi variant bo'lmasa, siz ushbu buyruqni qisqaroq yozishingiz mumkin:

echo file_get_contents("mening fayl nomim");

Ushbu maqola birinchi navbatda mahalliy fayllarni tahlil qilishga bag'ishlangan, ammo shuni yodda tutingki, siz funksiyalarning qo'shimcha tavsiflari uchun boshqa veb-saytlarni ham xohlashingiz, tasavvur qilishingiz va tahlil qilishingiz mumkin.

echo file_get_contents("http://127.0.0.1/");

Bu buyruq aslida bir xil:

$fh = fopen("http://127.0.0.1/", "r"); fpassthru($fh);

Mabut, siz qo'llagan narsangizga hayron bo'lasiz va "Bu hali ham mashaqqatli yo'l" deb o'ylaysiz. PHP sotuvchilari sizdan xursand bo'lishadi. Shunday qilib, buyruqni tezda bajarishingiz mumkin:

readfile("http://127.0.0.1/");

Readfile funktsiyasi butun faylni yoki veb-tomoni ko'rish buferini reklama uchun yuboradi. Zamovchuvannyam tsya jamoasi uchun bir soatlik muammo uchun kechirim haqida eslatma ko'rsatish. Ushbu xatti-harakatdan xalos bo'lish uchun (nima xohlasangiz), buyruqni sinab ko'ring:

@readfile("http://127.0.0.1/");

Shubhasiz, agar siz juda ko'p fayllarni qayta ishlashingiz kerak bo'lsa, file_get_contents aylanadigan bir qator - ehtimol juda ko'p. Wee, ehtimol siz split() yordami uchun kobdagi vvni bo'laklarga bo'lishni xohlaysiz.

$massiv = split("\n", file_get_contents("mening faylim"));

Lekin nima uchun bu burmalarga ega bo'lishingiz kerak, agar bu ideal funktsiya bo'lsa, siz uchun barcha ishlarni qanday qilish kerak? PHP funktsiyasi file() vazifani bir martalik bilan tugatadi: u satr massivini aylantiradi, uning elementlari fayl satrlari.

$massiv = fayl("mening faylim");

Shuni ta'kidlash kerakki, ikkita mo'ljallangan dumba o'rtasida kam farq bor. Split buyrug'i yangi qatorga o'tish belgilarini ko'radi, xuddi fayl qatoriga buyruqlar yangi qatorga o'tish belgilari bilan tugashi kabi (fgets almashtirish bilan bir xil).

PHP, prote imkoniyatlari yuqorida tavsiflanganidan ancha yuqori. Bitta parse_ini_file buyrug'i bilan siz butun PHP uslubidagi .ini fayllarini tahlil qilishingiz mumkin. parse_ini_file buyrug'i 4-ro'yxatda keltirilganlarga o'xshash fayllarni muzlatib qo'yadi.

Listing 4. Namuna .ini fayli
; Sharh nomi = "Qirol Artur" qidiruvi = Shtat muzlikchisi uchun sevimli rang = Moviy Samuel Klemens = Mark Tven Kerin Jonson = Vupi Goldberg

Keyingi buyruqlar faylni ko'rinadigan massivda taqdim etish va keyin bu massivni boshqasida ko'rsatishdir:

$file_array = parse_ini_file("holy_grail.ini"); print_r $file_array;

Natijada, quyidagi chiqish ma'lumotlari o'chiriladi:

Listing 5. Tashqi ma'lumotlar
Massiv ( => King Artur => Jinsiy aloqa uchun Halli Grail => Moviy => Mark Tven => Vupi Goldberg)

Albatta, jamoa divizionni baham ko'rganini eslash mumkin. Chalkashlik uchun, lekin siz boshqa parse_ini_file argumentidan foydalanib, kerakli tuzatishlarni osongina ishlab chiqishingiz mumkin: Boolean tipidagi process_sections. Process_sections ni True ga o'rnating.

$file_array = parse_ini_file("holy_grail.ini", rost); print_r $file_array;

Sizning vihídní daní matimut vglyad:

Listing 6. Tashqi ma'lumotlar
Massiv ( => Array ( => King Artur => Jinsiy aloqa uchun Halli Grail => Moviy) => Massiv ( => Mark Tven => Vupi Goldberg))

PHP ma'lumotlarni tahlil qilish uchun bo'lish oson bo'lgan boy massivga joylashtiradi.

Ammo bu aysbergning faqat uchi, chunki biz PHP da fayllarni qayta ishlash haqida gapiramiz. Tidy_parse_file va xml_parse kabi ko'proq hamkorlik funktsiyalari HTML va XML hujjatlarini to'g'ri tahlil qilishga yordam beradi. Ushbu funktsiyalarning ishi to'g'risidagi hisobotni ko'rib chiqishingiz uchun tarqatishga qayting. Belgilangan turdagi fayllar bilan shug'ullanayotganingizda, sizning hurmatingizning badbo'y hididan xafa bo'lib, barcha mumkin bo'lgan fayllar turlarini ko'rib chiqish o'rniga, maqola holatidagi farq bilan hurmat bilan tanishishingiz mumkin, de ê biroz hozirda men tomonidan tasvirlangan funktsiyalar bilan ishlashning mash'um iflos qoidalari.

yaxshi dasturlash uslubi

Sizning dasturingizdagi hamma narsa mo'ljallangan tarzda ishlashini unutmang. Masalan: fayl nima, nimani qidiryapsiz, harakat nima? Kirish huquqlarini o'zgartirish natijasida faylni o'qiy olmasangiz nima bo'ladi? Keyinchalik file_exists va is_readable usullari yordamida faylning uni oʻqishga ruxsatini oʻzgartirishingiz mumkin.

Listing 7. File_exists va is_readable
$filename = "mening faylim" ; agar (fayl_mavjud($fayl) && o'qilishi mumkin ($fayl nomi)) ( $fh = fopen($filename, "r"); # fclose($fh); ) qayta ishlanmoqda

Tim kam emas, amalda dasturning bu qismi, ehtimol, sizning vazifangiz uchun eng yuqori bo'ladi. Fopen tomonidan aylantirilgan qiymatlarni konvertatsiya qilish osonroq va aniqroq.

agar ($fh = fopen($fayl nomi, "r")) ( # fclose($fh); ) qayta ishlanmoqda

Fopen bayroqlari tasodifiy o'tish vaqtida False qiymatini aylantiradi va siz fayl faqat fayl ochilgan holatda qayta ishlanishiga kafolat berasiz. Shubhasiz, agar fayl to'g'ri bo'lmasa yoki o'qib bo'lmasa, siz qaysi qiymatni, nimaga aylanishini salbiy bo'lishini baholaysiz. Bundan tashqari, bunday reverb pastadir, yakkada biz mumkin bo'lgan nosozliklarni ishlatishimiz mumkin. Shu bilan bir qatorda, faylni ocholmaslik uchun tugallangan robot dasturini yutib olish yoki kechirim haqidagi bildirishnomani ko'rish mumkin.

Fopen kabi file_get_contents, file va readfile funksiyalari False ga aylanadi, shuning uchun siz uni ocholmaysiz yoki faylni qayta ishlay olmaysiz. fgets, fgetss, fread, fscanf va fclose funksiyalari ham kechirim so'ng False ga aylanadi. Zvichayno, bir ko'z qisib fclose uchun, siz, ymovírno, allaqachon ularning aylanish natijalarini yakunladi. Fclose nima qilish kerak, uni ochishning o'zi etarli emas, agar fayl identifikatori to'g'ri yopilmagan bo'lsa, fclose funktsiyasining aylantirilgan qiymatini qayta tekshirish, qoida tariqasida, muammo hisoblanadi.

Siz uchun tanlang

PHP bilan tanish emas samarali usullar fayllarni o'qish va tahlil qilish. Fread kabi klassik funktsiyalar sizga bir soatdan ko'proq vaqt davomida yaxshi xizmat qilishi mumkin yoki siz vazifani bajarish uchun zarur bo'lgan readfile ning soddaligidan ko'proq narsani olishingiz mumkin. Vikonati qidirayotganingizni hisobga olib, yotish to'g'ri tanlovdir.

Katta maʼlumotlar majburiyatlarini qayta ishlaganingizda, fscanf toʻgʻriroq va samaraliroq koʻrinadi, aytaylik, kelajakda split va sprintf buyruqlarida fayl uchun kamroq tarqalgan. Siz shunchaki katta va'da matnini kichik o'zgarishlar bilan ko'rsatishingiz mumkin, masalan, fayl , file_get_contents yoki readfile funktsiyalarini o'zgartirish, ehtimol, qo'shimcha bo'ladi. Shuning uchun, agar siz keshlash uchun PHP dan foydalansangiz, siz to'g'ri bo'lasiz yoki proksi-server yaratishingiz kerak, deb taxmin qilish xavfsiz.

PHP da fayllar bilan ishlash uchun juda ko'p vositalar mavjud. Ularning terisi bilan yaqindan tanishib chiqing va siz o'zingiz ishlayotgan loyiha uchun eng mos ekanligingizni bilib oling. senga keng tanlov dastur hissalari, uni iloji boricha samarali qiling va PHP texnikasi yordamida fayllaringizni qayta ishlashdan qoniqish hosil qiling.

PHP sezilarli darajada keyinroq paydo bo'lib, pastki mov va dasturlash o'z pozitsiyalarini o'zgartirdi, shakllantirildi ochiq namoyon bo'lishi sintaksis, mantiq, o'zgarishlar va dasturning boshqa ob'ektlari haqida. Fayllar va ular bilan ishlaydigan funksiyalar taraqqiyotni sekinlashtirmadi va tabiiy sabablarga ko'ra yuzaga kelgan fayllarni kodlash muammosi tubdan yangi echimlarga olib kelmadi.

Zagalni hurmat

Robotning asosiy ishi fayllar bilan bo'lib, ular hidlanmasligi uchun ular vodkritdan foydalanadilar, o'qiydilar / yozadilar va yopadilar. Bir soatlik ishlov berish uchun faylga kirishni blokirovka qilish/blokdan chiqarish funksiyasini o‘chirib qo‘yishingiz mumkin, faylni o‘qish/yozish holatini o‘rnatishingiz mumkin – hamma narsa, avvalgidek, o‘tmishda.

PHPda muhim jihat shundaki, fayllar bilan ishlash uchun juda ko'p funksiyalar va ulardan foydalanish imkoniyatlari mavjud. G'olib, ale olovli variantlarni tugatish juda oson. Fayl - tse, hamma narsa uchun persh, dastur xotirasi. Undan ma'lumot olishingiz mumkin. Har qanday sayt tomonidan tan olinadigan meta be-o'xshash dasturlar - ma'lumotlarni ifodalaydi, qayta ishlaydi va himoya qiladi.

Mebel bilan jihozlash

Ilgari, hech bo'lmaganda tepalik ostidan ongning o'zgarmas kuchi bor edi. Shunday qilib, dastur filmning bitta versiyasiga yozilgandan so'ng va dasturlash keyingi versiyada ideal tarzda tuzilgan / sharhlangan. Da joriy dasturlash unday emas. Filmning sintaktik konstruksiyalarining aksariyat sintaktik konstruksiyalari tarixga kirdi va jim va boshqa asboblarning uslublari, dasturlash usullari va versiyalari o'rtasidagi kurash ularning hayotining normasiga aylandi.

Fayllar bilan ishlash, masalan, ma'lumotlar bazalari bilan ishlash, zamin qoplamasi muhim, veb-sayt interfeysi muhimdir. Avvalo, filmning platformasi, xostingi, versiyasini o'zgartirganda, sayt kodini o'zgartirish shart emasligi shunday tartib sabab bo'ldi. Robotning fayllar bilan interfeysi okremy skriptning aybdorligi va yaxlitligini ta'minlash uchun aybdor, shuning uchun saytning o'zi dizayni har qanday qo'shimchaga, brauzerga mos ravishda moslashish va saytni berish uchun aybdor. bir xil funksionallik.

O'qing va o'zingizni o'zgartiring

Qanday qilib dastur o'zini o'zgartirishi mumkin, shuning uchun skriptni qanday yangilash mumkin? Shu kungacha oziq-ovqat zanjiri chikavit bagatioh. Ale, vazifa kabi ko'proq amaliy: PHP o'qish PHP fayli. Chakana sotuvchini ishga tushirmang, siz ma'lum bir kod yozish orqali boshqa chilarni tekshirishingiz mumkin. Agar siz saytga oziq-ovqat taqdim etgan bo'lsangiz va rivojlanish bosqichiga o'tmagan ovqatni tuzgan bo'lsangiz, ba'zan yoga o'zgartirishingiz kerak bo'ladi.

Boshqa usullarda bo'lgani kabi, birinchi navbatda faylni ochish kerak. Ushbu fayldan foydalanasizmi yoki yo'qmi, muhim emas. Agar fayl mavjud deb faraz qilsak (file_exists() funksiyasi ijobiy natija beradi), fopen() funksiyasi 'r', 'r+', 'a', 'a+' kirish bilan g'alaba qozonadi. Faylga hali ruxsat yo'q, 'a', 'a+', 'w', 'w+'. Faylga yozish natijasi fayl deskriptori bo'ladi. Fayl fclose() funksiyasi bilan yopiladi.

Agar o'qish paytida uni tahrirlash kerak bo'lmasa, faylni massivga o'qish uchun PHP-ni qo'lda o'zgartiring.

agar (fayl_mavjud($fName)) (

$aLines = fayl($fName)

Bunday variantda faylning teri qatori ketma-ketlik bilan massiv elementigacha olinadi. file() yoki file_get_contents() funksiyalari faylni yopishni talab qilmasligini belgilang.

Agar kirish fayli juda katta bo'lsa, lekin ozgina ma'lumotni bilish kerak bo'lsa, aks holda faylni ketma-ket o'qish uchun PHP dan foydalanishingiz mumkin. PHP fgets() va fgetc() funksiyalari bilan ishlay olishi kerak.

$fvs = fopen($fName, "r")

while ((noto'g'ri !== ($cLine = fgets($fvs, 2000)))) (

$cLines .= "
".$i."). $cLine

Variantlardan xafa bo'lib, ular bilmagan holda mashq qilishadi. Biroq, PHP keyingi o'zgarishlar uchun PHP faylini o'qiyotganda, keyingi qadam boshqa yozuvlarga kirishdir. Rivojlanish bosqichida yoga tanlovi varianti saytiga o'tishdan tortinmang. Oddiyroq qilib aytganda, skriptlarni o'zgartirish sayt funktsiyalari chegaralarida o'rnatiladi va o'zgartirish resurs ma'muri uchun mavjud emas.

Natijalarni saqlash

Ushbu yangilangan ma'lumot faylga fputs() funktsiyasi orqali yoki yana file_put_contents() funksiyasi orqali yoziladi.

$fName = $_SERVER["DOCUMENT_ROOT"] . "/tmp/scData.php"

$fvs = fopen($fName, "a")

suruv($fvs, LOCK_EX)

$cLine = "1 qator". chr(10)

fputs($fvs, $cline)

$cLine = "2 qator" . chr(10)

fputs($fvs, $cline)

suruv($fvs, LOCK_UN)

Yozuvning satrli versiyasida siz yozib olish jarayonida ma'lumotlarni boshqa qatorda o'zgartirishingiz mumkin, bu yoziladi yoki massiv yana faylga joylashtiriladi.

$fayl = "scData.php"

$cContents = file_get_contents($file)

// yozuv qo'shish

$cContents .= "yangi yozuv\n"

// faylni qayta yozish

file_put_contents($file, $cContents)

PHP da fayllarni o'qish va yozish oddiygina tabiiy tarzda yozilgan. Biroq, onalar tark etishi muhim: teri fayli ism, kengayish va yo'l (papka) bilan kiyinishdir. PHP skripti fayllarni o'qish va yozish imkoniyatiga ega bo'lishi uchun ushbu skriptga ruxsat bo'lishi kerak. Xushbo'y hid avtomatik ravishda hostingga qo'shiladi, lekin ba'zi hollarda siz uni kengaytirishingiz kerak.

Ba'zi hollarda, test o'qishni tugatgandan so'ng, natijalarni qayta ko'rib chiqish kerak. PHP-da fayllarni yozib olish kengaytirish bosqichida tekshiriladi, lekin ba'zi hollarda sayt xavfsizligi yoki ishonchliligi uchun.

Rays PHP, MySQl, JavaScript va ayniqsa brauzerlar odatiy holdir: jimgina ba'zi kechirimlarni o'z-o'zidan yoqilg'iga o'tkazishga ruxsat bering. "Men buni tanimadim, bu sodir bo'lmadi ..." - bu shart emas garna amaliyoti yetakchi tomon axborot texnologiyalari Ale tse vchit rozrobnikiv rahm-shafqat yo'q va toza, yakísny kodni yozing, bu ham yomon.

PHP bu robotni haqiqiy hujjatlar bilan

PHP faylini o'qish, dasturlash doirasidan tashqari, amaliy qiziqish uyg'otadi. Koristuvacha va vídvyduvacha sitesív tsíkavitíínformatsíya qoʻllaniladigan belgi, vik vik bachiti víglyady vídvyduvacha vídvyduvacha í formatlarda *.xlsx va *. docx fayllari. Barcha fayllar MS Excel va MS Word formatlarida.

Mahsulotlar ro'yxati, narxlar, xarakteristikalar odatda vizual jadvalda formatlanadi, shuning uchun PHP o'qish excel fayli muhimroq bo'lishi mumkin.

Bunday fayllar bilan ishlash uchun PHPExcel va PHPWord kutubxonalari kengaytirilgan. Biroq, OOXML standartidagi *.xlsx va *.docx vakillik fayllari o'rniga, zip arxivida haqiqiy vakillik hujjatiga kirish mumkin. Zip arxivlar- barcha anonim fayllar, shu jumladan rasmlar, ob'ektlar, formulalar, boshqa dasturlarning qo'shimchalari. Matn fayllari vizual teglardagi tavsiflar bilan ifodalanadi. Bunday faylni o'qishning o'zi etarli emas, uni tanlash va o'zgartirish uchun ushbu tuzilmani hisobga olish uchun uni saralash kerak.

Tse o'qish operatsiyasi arxivni ochish protsedurasiga aylantirilishini anglatadi. Kutubxonalar hujjat arxivlarini mustaqil ravishda ochish va chakana sotuvchiga bunday hujjatlarni o'qish, qayta ishlash va yozib olish uchun katta funktsiyalarni berish uchun tayinlangan.

Excel jadvallari

include_once 'PhpOffice/PhpExcel/IOFactory.php'

scGetExcelFile funksiyasi($xls)(

$objPHPExcel = PHPExcel_IOFactory::load($xls)

$objPHPExcel->setActiveSheetIndex(0)

//tsey massivi qatorlar massivlarini tozalash uchun

$aSheet = $objPHPExcel->getActiveSheet()

$massiv = massiv()

// qayta ishlash

foreach($aSheet->getRowIterator() $ qator sifatida)(

$cellIterator = $row->getCellIterator()

foreach($cellIterator $cell sifatida)(

array_push($item, iconv("utf-8", "cp1251", $cell->getCalculatedValue()))

array_push($massiv, $element)

Excel-fayllarini qayta ishlash qayta ishlashdan ko'ra sezilarli darajada katlanganligini o'qish Word hujjatlari. Qisqaroq versiya, chunki amaliy ma'lumotlarni o'qish va qayta ishlash uchun jiddiy loyihani amalga oshirish zarur - PHPWord kutubxonasini o'zlashtirishni boshlang. Tse ovqatlanishning o'ziga xos xususiyatlarida shvidka vhodzhennya garniy dosvid beradi.

Word hujjatlari

Usyogo ikki qator:

$oWord = yangi \PhpOffice\PhpWord\PhpWord()

$oDocx = $this->oWord->loadTemplate($cFileName)

$cFileName hujjati endi qayta ishlash uchun mavjud. Keyinchalik, arxivlarni oching, uni saytda ko'rishingiz mumkin bo'lgan tarzda tanlang va tahlil qiling, uni o'zgartiring va qayta yozing.

$zipClass = yangi ZipArchive()

$zipClass->open($this->tempFileName)

// to'liq hujjatni o'qing

uchun ($i=0; $i<$zipClass->numFiles; $i++) (

$cNameIn = $zipClass->getNameIndex($i)

$cNameInExt = substr($cNameIn, -4)

agar (($cNameInExt == ".xml") || ($cNameInExt == "rels")) (

// ".xml" va ".xml.rels" kengaytmali fayllar hujjat jadvallarida saqlanadi

// teri xml-qator bilan yoziladi noyob raqam tartibda; ... uchun

$cBodyIn = $zipClass->getFromName($cNameIn)

$cBodyInLen = strlen($cBodyIn)

// qolgan barcha fayllar hujjat papkasiga yoziladi

$cNameOnly = substr($cNameIn, strrpos($cNameIn, "/") + 1)

$zipClass->getFromName($cNameIn, $cWorkPath); // fayl o'rniga

Imkoniyat, yak PHPga yordam bering Excel va PHP Word sizga haqiqiy hujjatlarni boshqarish imkonini beradi, ular ayni paytda dolzarb bo'lib ishlaydi. Bugungi dinamik dunyoda biz muhimroq bo'lamiz. Og'irlik markazi uzoq vaqtdan beri mahalliy kompyuter texnologiyasidan virtual Internet maydoniga o'tdi. Shu sababli, mahalliy Microsoft mahsulotlarida jadvallar va hujjatlarni yaratish unchalik samarali emas, bunday hujjatlar bilan saytdagi avtomatik va avtomatik rejimda kamroq ishlash, bundan nafaqat jadvallar yoki hujjatlar yaratuvchisi, balki yordamchilar ham foydalanishi mumkin.

Matn fayllari, aks holda

Birinchisida oddiy matnli fayllar, pastroq PHP fayllari yoki dastur hujjatlari mavjud. Biroq, bu erda o'ylash kerak bo'lgan narsa bor. Bunday fayllarni o'qish/yozish bo'yicha operatsiyalar allaqachon ko'proq ma'lum, lekin bundan ham muhimi, bunday fayllarning qiymati kattaroq bo'lishi mumkin.

Ma'lumki, mijoz va server sifatida (birinchi panelda JavaScript, boshqa panelda PHP), keyin cookie-fayllar va seanslar mexanizmlari skriptlar, tomonlar, ushbu va boshqa jarayonlar o'rtasida kerakli ma'lumotlarni uzatishga dosh bera olmaydi.

Meni mag'lub qila olasizmi? o'zgartirish kerak ma'lumotlar bazasida, lekin barcha o'zgarishlar va tezliklar uchun kichik vaqt va post matnli fayllar boy uzatish opsiyasi bilan boy bo'lishi mumkin. Agar siz boshqa shaxsiy fayllarni yaratmasangiz va ularning kengayishini nazorat qilmasangiz, hid ma'lumotlar bazasining o'ziga xos va yanada moslashuvchan versiyasi bo'lishi mumkin.

PHP matn faylini tez o'qiydi, uni strukturaga, massivga yoki ob'ektga ajratish mumkin. PHP skriptiga kiritilgan bir soat davomida yashovchi ob'ektlarni yaratishga imkon beradigan narsa muhim bo'lib qolsin, bu esa, ko'rinishidan, faqat serverda va faqat AJAX-ning shakllanishi paytida ishlatilishi mumkin. amalga oshirilishi mumkin yoki boshqa sabablarga ko'ra, boshlash tugmasini bosing PHP tarjimoni.

Buni o'ylab ko'ring, nima matn fayli- chakana sotuvchi bilan bir xil tuzilma, PHP fayli - tarjimon sintaksisi va chakana sotuvchining mantig'i va html, css, xml tavsifining "teglari" - elementlarning ma'nosi qanchalik katta bo'lsa-da, lekin tomonidan tartibga solinmaydi. statik standartlar. Siz imovirno fayllar bo'lganlar haqida o'ylashingiz mumkin, yangi davr kelishi vaqti keldi va ularning sifati va zastosuvannya mantiqini aniqlash uchun o'zingiz javobgarsiz. Dasturlash o'z rivojlanishining keyingi bosqichiga hali tayyor emasligi sababli, fayllar shunchaki fayllar bilan to'ldirilgan, go'yo chakana sotuvchini yaratish va uni rivojlantirish uchun mo'ljallangan.

Eng yaxshi va eng istiqbolli, agar kerak bo'lsa, PHP PHP faylni mustaqil o'qisa. Va PHP fayldan satrni ob'ekt yaratilgunga qadar, hatto o'sha holatda bo'lsa ham, siz saqlayotgan tarzda o'qish osonroq. Biz to'g'ri fikrlarni bilmaymiz, lekin hozirgi dunyoga hamma narsa juda tez o'zgaradi.

© 2022 androidas.ru - Android haqida hamma narsa