PHP ашиглан файлуудыг хэрхэн зөв унших вэ. Файлын системтэй ажиллах php файлтай ажиллах даалгавар

Үүнд зарим мэдээллийг файлд бичих болно. Жишээлбэл, янз бүрийн тайлан, эвлэрэл гэх мэт. Энэ нь тохиромжтой, учир нь ... Та онлайн дэлгүүрийн удирдлагын системийнхээ нууц үгийг үргэлж биедээ авч явах шаардлагагүй, гэхдээ та флаш диск рүү текст файлаа хаяж болно.

Файл бичих, уншихын тулд fopen функц байдаг бөгөөд үүнийг жишээгээр харцгаая.

Файл руу бичих

$ бариул = fopen("1.txt", "w");

Энд бид файлыг нээвэл "w" параметр нь файлыг бичих боломжтой гэж хэлдэг. Бид файлын нөөцийн ID-г $handle хувьсагч руу бичдэг (жишээлбэл, бичих эсвэл унших).

"w"-ээс гадна php-д дараах параметрүүд байдаг.

r- унших

w- бичлэг, хэрэв файл байхгүй бол түүнийг үүсгэнэ, хэрэв байгаа бол бүх мэдээллийг устгана.

а- нэмэлт бичлэг, хэрэв файл байхгүй бол түүнийг үүсгэнэ, хэрэв файл байгаа бол мэдээллийг эцэс хүртэл бичнэ.

Файлаас уншиж байна

Файл нэмж байна

Чиг үүрэг файлын хэмжээ("1.txt")- бид файл дахь тэмдэгтүүдийн тоог тоолдог, өөрөөр хэлбэл бид файлыг бүрэн уншдаг.
Хэрэв та оронд нь зааж өгвөл файлын хэмжээ("1.txt")- 10 дугаар, дараа нь эхний 10 тэмдэгтийг уншина

Файлд массив бичих

Заримдаа та файлд мөр биш массив бичих хэрэгтэй болдог. Эдгээр зорилгын үүднээс цуваа болгох/цэвэрлэх функц байдаг.

Цуваа болгох функц нь массивыг бидний файлд бичиж болох мөр болгон хувиргадаг. Unserialize функц нь эсрэг үйлдлийг хийж мөрийг массив болгон хувиргадаг.
Энд нэг жишээ байна:

Ихэнх тохиолдолд хүмүүс зарим мэдээллийг файлд бүртгэх онлайн дэлгүүр захиалахыг хүсдэг. Жишээлбэл, янз бүрийн тайлан, эвлэрэл гэх мэт. Энэ нь тохиромжтой, учир нь ... Та онлайн дэлгүүрийн удирдлагын системийнхээ нууц үгийг үргэлж биедээ авч явах шаардлагагүй, гэхдээ та флаш диск рүү текст файлаа хаяж болно.

OX2 2014-10-03 2014-10-03

Хэрэв та PHP-тэй бие даан ажиллаж сурч байгаа бол файлаас өгөгдөл уншиж, түүнд өөрчлөлт оруулах аргад суралцах нь чухал юм. Php файлд бичлэг хийх нь вэб програмуудыг хөгжүүлэх, серверийн мэдээлэлд өөрчлөлт оруулах, гадны программууд болон оруулгуудыг эхлүүлэхэд зориулагдсан болно.

php файлуудтай хэрхэн ажиллах талаар

Хэрэв файл ийм өргөтгөлтэй бол энэ нь ижил нэртэй програмчлалын хэл дээр бичигдсэн програмын кодыг агуулж байна гэсэн үг юм. Өөрчлөлт хийхийн тулд та компьютер дээрээ програм хангамжийн засварлагчдын аль нэгийг суулгах хэрэгтэй:

PHP шинжээч редактор;
. Dreamweaver;
. Eclipse PHP хөгжүүлэлт;
. PHPEdit.

Хэрэв та вэбсайт үүсгэж байгаа бол өөр файлд загвар болгон хадгалахад тохиромжтой ижил загваруудыг ашиглах шаардлагатай болдог. Үүний тулд include-г ашиглах нь дээр. Энэ функцийг оруулсны дараа та php файлд холболтын нэр болон өргөтгөлийг бичих хэрэгтэй, тухайлбал 1.php оруулах хэрэгтэй. Энэхүү загвар нь хавсаргасан файлын олон уншилтыг дэмждэг бөгөөд нэмэлт функц нь алдаа гарсан тохиолдолд кодыг тасралтгүй ажиллуулах явдал юм. Хэрэв ямар нэг зүйл буруу болвол кодыг шинэ мөрөөс үргэлжлүүлэн ажиллуулна.
Ингэснээр та файлаа коддоо оруулах болно. Өөр нэг арга бол шаардлагатай оруулах явдал юм. Дээр дурдсанаас ялгаатай нь файлыг програмын кодыг ажиллуулж эхлэхээс өмнө оруулсан боловч та зөвхөн нэг л удаа хандах боломжтой.

Файлын баталгаажуулалт

Та php файл руу бичихээсээ өмнө энэ нь байгаа эсэхийг шалгаад дараа нь нээж, шаардлагатай засварыг хийх хэрэгтэй. Үүнийг хийхийн тулд та file_exists() функцийг ашиглаж болно, хэрэв энэ нь байгаа эсэхийг баталгаажуулвал засварлагчийн цонхонд TRUE гэсэн хариу гарч ирнэ, эс тэгвээс - FALSE.
Өөр нэг функц is_file() нь php файлд өгөгдөл бичих боломжтой гэдгийг танд мэдэгдэх боломжтой. Энэ нь file_exit-ээс илүү найдвартай бөгөөд ихэнх програмистууд эхлэхийн тулд is_file-г ашигладаг. Файл байгаа эсэхийг шалгасны дараа та түүнтэй ажиллаж эхлэх боломжтой.

Файлд өөрчлөлт хийж байна

Файлд өөрчлөлт оруулах хамгийн эхний хэрэгсэл бол fwrite() юм. Энэ нь дараах синтакс бүхий мөрүүдийг бичдэг:

Int - манипулятор;
. Мөр бол хувьсагч юм.

Үүнтэй төстэй өөр нэг функц байдаг - fputs() нь өөр нэр юм. Эдгээр хэрэгслүүдийн хооронд ямар ч ялгаа байхгүй, та аль нэгийг нь сонгож болно. Оюутнуудын хувьд fwrite нь илүү түгээмэл байдаг бол дадлагажигч програмистууд ихэвчлэн fput ашигладаг.

Текст файлд PHP оруулга хийхийн тулд нэг чухал нөхцөл хангагдсан байх ёстой - энэ нь засварлахад нээлттэй байх ёстой. Энэ файл нь бичих зөвшөөрөлтэй хавтсанд байх ёстой.

Ажиллахын тулд эхлээд програмын текст баримт бичгийг нээж, дараа нь ердийн хэрэгслээр засвар хийж үзээрэй.

// Текст файл нээх
$f = fopen("text.txt", "w");
// Текстийн мөр бичих
fwrite($f, "Сайн уу! Өдрийн мэнд!");
// Текст файлыг хаах
fclose($f);

Энэ жишээнд text.txt нь баримт бичгийн нэр юм. Та үүнийг өөрөөр дуудаж болно: "Сайн уу! Сайхан өдөр! - текстийн жишээ, энэ нь бүрэн дур зоргоороо байж болно. Бүх өөрчлөлтүүд нээлттэй файлд автоматаар хадгалагдана.

РНР бол ерөнхий зориулалт гэдгийг анхаарна уу. Энэ нь вэб програм үүсгэхэд эрчимтэй ашиглагддаг. Энэ шийдлийг ихэнх хостинг үйлчилгээ үзүүлэгчид дэмждэг. Бид вэбсайт үүсгэхэд ашигладаг хэрэгслүүдийн дунд тэргүүлэгчийн тухай ярьж байна. Одоо та php файл руу хэрхэн бичихээ мэддэг болсон.

PHP хэл дээр та ихэвчлэн файл үүсгэх асуудалтай тулгардаг... энэ нь маш энгийн: дискэн дээр ямар ч файл байхгүй, кодыг ажиллуулж, файл гарч ирсэн тул та энэ файлыг өөр хувьсагч эсвэл бүр хүссэн хуудас руу уншиж болно. Интернет, дараа нь тэнд ямар нэг зүйл бичээрэй ... гэхдээ үүний тулд та тусгай функцуудыг мэдэх хэрэгтэй ... энэ нийтлэлд энэ талаар дэлгэрэнгүй...

Гүйцэтгэх боломжтой скриптээр PHP дээр файл үүсгэхийн тулд та хэд хэдэн функцийг зааж өгөх хэрэгтэй:

Нэг жишээг харцгаая:

$text = "Файлд бичих зарим төрлийн текст";
$fp = fopen("file.txt", "w");
fwrite($fp, $текст);
fclose($fp);
?>

Энд та мэдэх ёстой:

fopen()- функц нь унших, бичих, тодруулга хийх файлыг нээдэг;

Энэхүү тодруулга (fopen функцийн горимын параметр) маш чухал юм.

  • "r" - php дээр файл нээх Зөвхөн уншихад зориулагдсан. Курсорыг эхэнд байрлуулна.
  • "r+" - php дээр файл нээх унших, бичих зориулалттай. Курсорыг эхэнд байрлуулна. !!! - эдгээр r ба r+ хоёр горимын хувьд файлуудыг аль хэдийн үүсгэсэн байх ёстой (эсвэл алдаа гарч ирнэ. Анхааруулга: fopen(file.txt): урсгалыг нээж чадсангүй: Ийм файл эсвэл лавлах ...), бид зөвхөн уншдаг эсвэл нэмэх боломжтой.
  • "w" - файлыг ЗӨВХӨН бичихэд нээнэ. Файлыг тэг урттай болгож тайруулна - өөрөөр хэлбэл дарж бичнэ. Шаардлагатай зүйлийг бичиж, Курсорыг эхэнд нь байрлуулна.
  • "w+" - бичих, УНШИХ файлыг нээнэ! Үлдсэн хэсэг нь "w" горимтой адил байна. !!! - эдгээр хоёр горимд - хэрэв файл үүсгээгүй бол - ҮҮСГЭХ ОРОЛЦООГ ХИЙХ БОЛНО!
  • "а" - файлыг ЗӨВХӨН бичихэд нээнэ. "w"-ээс ялгаатай нь энэ сонголт нь файлын агуулгыг дарж бичихгүй, харин курсорыг мөрийн төгсгөлд байрлуулж, төгсгөлд нь нэмэхийг хүссэн контентыг хавсаргана.
  • "a+" - бичих, унших файлыг нээх.

дахин бичих($fp, $text) - PHP хэл дээрх файлд бичих функц - өөрөөр хэлбэл $text хувьсагч дотор байгаа зүйлийг $fp хувьсагч дахь файлд бичнэ;

fclose($fp) - $fp хувьсагч руу бидний бичсэн файлыг хаах функц;

Одоо та php дээр файлуудыг хялбархан үүсгэж, уншиж, засварлахын тулд нээж болно.

Нээлттэй файлтай ажиллахад хэрэгтэй PHP нэмэлтүүд болон функцууд:

while(!feof($fp))(
$mytext = fgets($fp, 99);
echo $mytext."
";
}

Энд нөхцөл хангагдсан - "файлын төгсгөлд хүрэх хүртэл үүнийг хий" while(!feof($fp))

1. Үйл ажиллагаа fgets($fp, 99) - бүх агуулгыг 99 байт ба түүнээс дээш хэсэг болгон хуваах боломжийг олгодог бөгөөд үүнийг илүү тодорхой харахын тулд бид шошго байрлуулна.

Энэ мөр функц fgets(нөөцийн бариул [, int length]) нь анхдагчаар 1024 байт (1 килобайт)-ыг уртын параметр болгон хүлээн зөвшөөрдөг, хэрэв заагаагүй бол тийм байх болно. Энэ параметр нь PHP 4.2.0 хувилбарын дагуу сонголттой (Алдаа гарсан тохиолдолд ХУДАЛ буцаана)

Файл нээх, бичих, үүсгэх нэмэлт функцууд

Чиг үүрэг - int дахин файл(мөр файлын нэр [, bool use_include_path [, нөөцийн контекст]]) - файлыг бүхэлд нь уншина уу.

Файлыг уншиж, агуулгыг гаралтын буферт бичнэ. Мөн гаралтын байтны тоог буцаана. Алдаа гарсан тохиолдолд нохойг ашиглаагүй тохиолдолд буцаж ирнэ - @readfile.

Иймэрхүү зүйл тохиолдох болно:

Үгийн төгсгөлд шошго байдаг
.

б. Функц - массив файл(мөр файлын нэр [, int use_include_path [, нөөцийн контекст]]) нь унших файлын функцтэй ижил үйлдлийг гүйцэтгэдэг бөгөөд нэгийг эс тооцвол файлын агуулгыг массив руу нэмнэ:

Ингэснээр та интернетийн дурын хуудсыг уншиж болно: $lines = file("http://site/"); мөн foreach функцийг ашиглан массиваар давтах;

3а. мөр функц file_get_contents(мөр файлын нэр [, bool use_include_path [, нөөцийн контекст [, int offset [, int maxlen]]]] - агуулгыг нэг мөр болгон авах боломжийг танд олгоно.

Энэ нь файлыг уншихад зориулагдсан PHP-ийн илүү түгээмэл функц бөгөөд файлын функцтэй төстэй бөгөөд зөвхөн агуулгыг массив биш мөр хэлбэрээр буцаадаг бөгөөд та аль байтаас эхлэх нөхцөлийг тохируулж болно. офсеттэгээд хаана дуусах вэ - макслен. Амжилтгүй бол энэ нь ХУДАЛ буцаана.

Чухал!!!- энэ тохиолдолд функц нь 3-ыг нэг дор орлоно: fopen(), fread() болон fclose() ба ингэснээр тэмдгээс ангижрах болно.

3б. int функц file_put_contents(мөр файлын нэр, холимог өгөгдөл [, int flags [, нөөцийн контекст]]) - fopen(), fwrite() болон fclose() функцүүдийн дараалсан дуудлагатай ижил - бичигдсэн байтуудын тоог буцаана.

fopen, fclose, feof, fgets, fgetss, fscanf функцуудыг ашиглах тухай

Бүх боломжуудыг жагсаацгаая

PHP гэх мэт орчин үеийн програмчлалын хэлтэй ажиллахын нэг давуу тал нь боломжит функцуудын тоо юм. PHP нь Perl-ийн "Ямар нэгэн зүйл хийх нэгээс олон арга байдаг" гэсэн уриаг, ялангуяа файл боловсруулах үед амархан хэрэглэж болно. Гэхдээ олон тооны хэрэгслүүд байгаа тул аль нь ажлыг гүйцэтгэхэд илүү тохиромжтой вэ гэдэг асуулт гарч ирнэ. Мэдээжийн хэрэг, энэ асуултын хариулт нь файлыг боловсруулахдаа таны зорилго юу байхаас шалтгаална, тиймээс хэлний бүх чадварыг сурах нь таны цаг хугацаа юм.

Уламжлалт фопен аргууд

Фопенийн аргууд нь C ба C++ програмистуудад хамгийн танил болсон байж магадгүй, учир нь эдгээр хэл дээр ажиллаж байсан бол олон жилийн турш таны гарт байсан арга хэрэгсэл юм. Эдгээр аргуудын аль нэгийн хувьд та 1-р жагсаалтад үзүүлсэн шиг файлыг нээхдээ fopen, өгөгдлийг унших функцийг, дараа нь файлыг хаахын тулд fclose-ийг ашиглан стандарт процедурыг дагана уу.

Жагсаалт 1. fgets ашиглан файл нээх, унших
$file_handle = fopen("myfile", "r"); while (!feof($file_handle)) ( $line = fgets($file_handle); echo $line; ) fclose($file_handle);

Хэдийгээр эдгээр функцууд нь ихэнх туршлагатай програмистуудад танил боловч хэрхэн ажилладаг талаар дүн шинжилгээ хийцгээе. Бодит байдал дээр та дараах алхмуудыг хийж байна.

  1. Файлыг нээнэ үү. $file_handle нь файлын холбоосыг өөрөө хадгалдаг.
  2. Та файлын төгсгөлд хүрсэн эсэхээ шалгана уу.
  3. Уншсан мөр бүрээ хэвлэж дуустал файлаа үргэлжлүүлэн уншаарай.
  4. Файлыг хаа.

Үүнийг харгалзан би энд ашигласан файлын функц бүрийг авч үзэх болно.

fopen функц

fopen функц нь файлтай холболт үүсгэдэг. Би "холболтыг бий болгодог" гэж хэлж байна, учир нь fopen нь файл нээхээс гадна URL-г нээх боломжтой:

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

Програмын энэ мөр нь дээрх хуудасны холбоосыг үүсгэж, үүнийг дотоод файл болгон уншиж эхлэх боломжийг танд олгоно.

Жич: Fopen-д ашигласан "r" сонголт нь файлыг зөвхөн унших боломжтой гэдгийг харуулж байна. Файл руу бичих нь энэ нийтлэлд хэлэлцсэн асуудлын хүрээнд ороогүй тул би параметрийн бүх боломжит утгыг жагсаахгүй. Гэсэн хэдий ч, хэрэв та платформ хоорондын нийцтэй байдлын үүднээс хоёртын хувилбараас уншиж байгаа бол "r"-ийг "rb" болгож өөрчлөх хэрэгтэй. Энэ төрлийн жишээг доор харуулав.

feof функц

feof команд нь унших нь файлын төгсгөлд хүрсэн эсэхийг тодорхойлж, True эсвэл False гэж буцаана. Доор үзүүлсэн давталт "myfile" файлын төгсгөл хүртэл үргэлжилнэ. Хэрэв та URL-г уншиж байгаа бол feof мөн False-г буцаадаг бөгөөд унших дата байхгүй тул холболтын хугацаа дууссан гэдгийг анхаарна уу.

Fclose функц

Жагсаалт 1-ийн дундыг алгасаад төгсгөл рүүгээ явцгаая; fclose нь fopen-ийн эсрэг үйлдэл хийдэг: энэ нь файл эсвэл URL-тай холбогдохыг хаадаг. Энэ функцийг гүйцэтгэсний дараа та файл эсвэл залгуураас унших боломжгүй болно.

fgets функц

Жагсаалт 1-ээс хэд хэдэн мөрийг буцаавал та файл боловсруулах үйл явцын гол цөмд хүрнэ: үнэндээ файлыг уншиж байна. fgets функц бол эхний жишээн дээр таны сонгох зэвсэг юм. Энэ нь файлаас өгөгдлийн мөрийг шүүрэн авч түүнийг мөр болгон буцаана. Тэндээс та өгөгдлийг харуулах эсвэл өөр аргаар боловсруулах боломжтой. Жагсаалт 1-д байгаа жишээ нь файлыг бүхэлд нь хэвлэдэг.

Хэрэв та ажиллаж байгаа өгөгдлийн хэсэгийнхээ хэмжээг хязгаарлахаар шийдсэн бол авсан өгөгдлийн мөрийн хамгийн их уртыг хязгаарлахын тулд fgets аргумент нэмж болно. Жишээлбэл, мөрийн уртыг 80 тэмдэгтээр хязгаарлахын тулд дараах кодыг ашиглана уу.

$string = fgets($file_handle, 81);

Си хэл дээрх мөрийн төгсгөлийн заагч "\0"-ийг бодоод, уртыг нь шаардлагатай хэмжээнээсээ нэг тэмдэгтээр урт болго. Таны харж байгаагаар дээрх жишээнд 81 тэмдэгт ашигласан бол танд 80 тэмдэгт хэрэгтэй. Өгөгдсөн функцэд мөрийн уртын хязгаар тогтоох шаардлагатай үед нэмэлт тэмдэгт нэмж зуршил болго.

fread функц

fgets функц нь файлыг унших боломжтой олон функцүүдийн зөвхөн нэг нь юм. Ихэнх тохиолдолд файлыг мөр мөрөөр боловсруулах нь хамгийн утга учиртай байдаг тул энэ нь хамгийн түгээмэл хэрэглэгддэг функцуудын нэг юм. Үнэн хэрэгтээ бусад хэд хэдэн функцууд нь ижил төстэй боломжуудыг санал болгодог. Гэсэн хэдий ч мөр мөрөөр дүн шинжилгээ хийх нь танд үргэлж хэрэгтэй зүйл биш юм.

Эндээс бид fread-д ханддаг. Fread функц нь fgets-ээс арай өөр зорилготой: энэ нь хоёртын файлаас (өөрөөр хэлбэл хүний ​​унших боломжтой текстээс бүрдээгүй файлууд) унших зориулалттай. "Мөр" гэсэн ойлголт нь хоёртын файлд хамааралгүй (логик өгөгдлийн бүтэц нь ихэвчлэн мөрөнд хуваагддаггүй) тул та унших байтны тоог зааж өгөх ёстой.

$fh = fopen("myfile", "rb"); $өгөгдөл = fread($file_handle, 4096);

Дээрх жишээ нь 4096 байт (4 KB) өгөгдлийг уншдаг. Таны заасан утгаас үл хамааран fread дээд тал нь 8192 байт (8 KB) унших болно гэдгийг анхаарна уу.

Файлыг 8 КБ-аас ихгүй гэж үзвэл доорх програмын хэсэг файлыг бүхэлд нь нэг мөрөнд унших ёстой.

$fh = fopen("myfile", "rb"); $өгөгдөл = fread($fh, файлын хэмжээ("миний файл")); fclose($fh);

Хэрэв файлын хэмжээ том бол та үлдсэн хэсгийг уншихын тулд гогцоо ашиглах хэрэгтэй болно.

fscanf функц

Мөрийн боловсруулалт руу буцаж ороход fscanf нь C файлын сангийн уламжлалт функцийн залгамжлагч юм. Хэрэв та үүнийг сайн мэдэхгүй бол fscanf нь өгөгдлийн талбаруудыг файлаас хувьсагч болгон уншдаг.

жагсаалт ($field1, $field2, $field3) = fscanf($fh, "%s %s %s");

Энэ функцэд ашигласан форматын мөрүүдийг PHP.net гэх мэт олон эх сурвалжид тайлбарласан байгаа тул би энэ мэдээллийг энд давтахгүй. Мөр форматлах нь маш уян хатан гэдгийг хэлэхэд хангалттай. Бүх талбаруудыг функцээр буцаасан хувьсагчд байрлуулсан гэдгийг бас дурдах хэрэгтэй. (С хэл дээр эдгээрийг аргумент болгон дамжуулах болно.)

fgetss функц

fgetss функц нь уламжлалт файл боловсруулах функцээс ялгаатай бөгөөд PHP-ийн чадавхийг илүү сайн ойлгох боломжийг танд олгоно. Энэ нь fgets шиг ажилладаг боловч илрүүлсэн HTML эсвэл PHP хаягуудыг устгаж, зөвхөн нүцгэн текстийг үлдээдэг. Доорх HTML файлыг авч үзье.

Жагсаалт 2. Жишээ HTML файл
Миний цол

Хэрэв та "Cause there ain"t no one for to give you no pain" гэдэг нь юу болохыг ойлгож байгаа бол та America хамтлагийн дууг хэт их сонсдог.

Үүнийг fgetss функцээр дамжуулъя.

Жагсаалт 3. fgetss ашиглах
$file_handle = fopen("myfile", "r"); while (!feof($file_handle)) ( echo = fgetss($file_handle); ) fclose($file_handle);

Энэ нь гаралт болгон авах болно:

Миний гарчиг "Cause there ain"t no one for to give you no pain" гэж юу болохыг ойлгож байгаа бол та America хамтлагийн дууг хэт их сонсдог.

fpassthru функц

Файлаас өгөгдлийг хэрхэн уншиж байгаагаас үл хамааран та fpassthru функцийг ашиглан стандарт гаралтын сувгийг ашиглан үлдсэн өгөгдлийг хэвлэх боломжтой.

fpassthru($fh);

Энэ функц нь өгөгдлийг хэвлэх тул та үүнийг хувьсагчид оруулах шаардлагагүй болно.

Шугаман бус файл боловсруулах: файл дундуур шилжих

Мэдээжийн хэрэг, дээр дурдсан функцууд нь зөвхөн файлаас дараалан унших боломжийг олгодог. Илүү төвөгтэй файлууд нь файлын эхэнд эсвэл төгсгөлд өөр өөр хэсгүүдэд шилжих шаардлагатай байж болно. Үүнийг хийхийн тулд танд fseek функц хэрэгтэй.

fseek($fh, 0);

Дээрх жишээ нь файлын эхэнд буцаж очно. Хэрэв та файлын эхэнд шилжихийг хүсэхгүй байгаа бол нэг килобайт хангалттай гэж хэлээрэй - та зүгээр л бичнэ үү:

fseek($fh, 1024);

PHP V4.0 хувилбарын хувьд өөр хэд хэдэн сонголтууд бас боломжтой. Жишээлбэл, хэрэв та одоогийн байрлалаасаа 100 байт урагшлах шаардлагатай бол дараах кодыг ашиглаж болно.

fseek($fh, 100, SEEK_CUR);

Үүний нэгэн адил 100 байтыг буцаах нь:

fseek($fh, -100, SEEK_CUR);

Хэрэв та файл дуусахаас өмнөх 100 байт байрлал руу буцахыг хүсвэл оронд нь SEEK_END-г ашиглана уу.

fseek($fh, -100, SEEK_END);

Шинэ байрлалд хүрсний дараа та өгөгдлийг уншихын тулд fgets, fscanf эсвэл өөр функцийг ашиглаж болно.

Жич:та URL-г иш татсан файлын тодорхойлогч дээр fseek-г ашиглах боломжгүй.

Файлыг бүхэлд нь авах

Одоо бид PHP-ийн өвөрмөц файл боловсруулах боломжуудыг авч үзэх болно: нэг эсвэл хоёр мөрөнд том хэмжээний өгөгдлийг боловсруулах. Жишээлбэл, та хэрхэн файлыг барьж аваад түүний агуулгыг бүхэлд нь вэб хуудсандаа харуулах вэ? За, та fget-тэй гогцоо ашиглах жишээг харсан. Гэхдээ та үүнийг хэрхэн хөнгөвчлөх вэ? Энэ процесс нь файлыг бүхэлд нь мөрөнд тавьдаг fgetcontents-ийг ашиглах нь бараг инээдтэй хялбар юм.

$my_file = file_get_contents("миний файлын нэр"); echo $my_file;

Хэдийгээр энэ нь хамгийн сайн сонголт биш боловч та энэ тушаалыг богино хугацаанд бичиж болно:

echo file_get_contents("миний файлын нэр");

Энэ нийтлэл нь үндсэндээ локал файлуудыг боловсруулахад чиглэгддэг боловч тайлбарласан функцуудыг ашиглан бусад вэб хуудсуудыг авах, харуулах, задлан шинжлэх боломжтой гэдгийг тэмдэглэх нь зүйтэй.

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

Энэ тушаал нь үнэндээ ижил байна:

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

Та эдгээр жишээнүүдийг хараад "Энэ бол маш их ажил юм" гэж бодож байж магадгүй юм. PHP хөгжүүлэгчид тантай санал нэг байна. Тиймээс та дээрх тушаалыг богиносгож болно:

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

Readfile функц нь файл эсвэл вэб хуудасны бүх агуулгыг анхдагч гаралтын буфер рүү гаргадаг. Анхдагч байдлаар, энэ тушаал амжилтгүй болсон үед алдааны мэдэгдлийг харуулдаг. Энэ зан үйлээс зайлсхийхийн тулд (хэрэв та үүнийг хүсвэл) дараах тушаалыг ашиглана уу.

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

Мэдээжийн хэрэг, хэрэв та файлын агуулгыг боловсруулах шаардлагатай бол file_get_contents-ийн буцаасан ганц мөр хэтэрхий их байх магадлалтай. Та эхлээд split() функцийг ашиглан хэсэг болгон хуваахыг хүсч болно.

$ массив = хуваах("\n", file_get_contents("миний файл"));

Гэхдээ танд энэ ажлыг гүйцэтгэх төгс тохирох функц байгаа бол яагаад танд энэ бүх нарийн төвөгтэй байдал хэрэгтэй байна вэ? PHP file() функц нь энэ ажлыг нэг алхамаар гүйцэтгэдэг: элементүүд нь файлын мөрүүд болох стринг массивыг буцаана.

$ массив = файл("миний файл");

Дээрх хоёр жишээний хооронд бага зэрэг ялгаа байгааг тэмдэглэх нь зүйтэй. Хуваах команд нь шинэ мөрүүдийг устгадаг бол файлын команд нь массивын мөрүүдийг шинэ мөрөөр төгсгөдөг (fgets адил).

PHP-ийн чадварууд нь дээр дурдсанаас хамаагүй илүү юм. Та ганц parse_ini_file командын тусламжтайгаар PHP загварт .ini файлуудыг бүхэлд нь задлан шинжлэх боломжтой. parse_ini_file тушаал нь Жагсаалт 4-т үзүүлсэнтэй төстэй файлуудад хамаарна.

Жагсаалт 4. Жишээ .ini файл
; Сэтгэгдлийн нэр = "Хаан Артур" эрэл = Ариун хайрцгийг хайх дуртай өнгө = Цэнхэр Самуэль Клеменс = Марк Твен Кэрин Жонсон = Вупи Голдберг

Дараах командууд нь файлыг массив хэлбэрээр илэрхийлж дараа нь массивыг хэвлэнэ.

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

Үр дүн нь дараах гаралт болно.

Жагсаалт 5. Гаралт
Массив ( => Артур хаан => Ариун Граил хайх => Цэнхэр => Марк Твен => Вупи Голдберг)

Мэдээжийн хэрэг, энэ тушаал нь хэсгүүдийг нэгтгэсэн болохыг анзаарч магадгүй юм. Энэ нь анхдагч үйлдэл боловч та Boolean хувьсагч болох parse_ini_file: process_sections хоёр дахь аргументыг ашиглан үүнийг хялбархан өөрчилж болно. Процессын хэсгүүдийг Үнэн болгож тохируулна уу.

$file_array = parse_ini_file("holy_grail.ini", үнэн); print_r $file_array;

Мөн таны гаралт дараах байдлаар харагдах болно.

Жагсаалт 6. Гаралт
Массив ( => Массив ( => Артур хаан => Ариун Граил хайхын тулд => Цэнхэр) => Массив ( => Марк Твен => Вупи Голдберг))

PHP нь өгөгдлийг хялбар задлан шинжилж болох олон хэмжээст массив болгон оруулдаг.

Гэхдээ энэ нь PHP дээр файл боловсруулах тухайд мөсөн уулын зөвхөн орой юм. Tidy_parse_file болон xml_parse зэрэг илүү төвөгтэй функцууд нь HTML болон XML баримтуудыг тус тус задлан шинжлэхэд тусална. Эдгээр функцууд хэрхэн ажилладаг талаар дэлгэрэнгүй мэдээллийг хэсгээс үзнэ үү. Хэрэв та эдгээр файлын төрлүүдтэй ажиллах бол эдгээрийн аль алиныг нь анхаарч үзэх хэрэгтэй, гэхдээ та бүх боломжит файлын төрлүүдийг судлахын оронд энэ нийтлэлийн агуулгыг сайтар судалж үзэхийг хүсч болно. миний тайлбарласан функцүүдтэй ажиллах.

Сайн програмчлалын хэв маяг

Таны хөтөлбөрт байгаа бүх зүйл төлөвлөсний дагуу ажиллана гэж хэзээ ч битгий бодоорой. Жишээ нь: хэрэв таны хайж буй файл зөөгдсөн бол яах вэ? Зөвшөөрлийн өөрчлөлт нь таныг файлын агуулгыг унших боломжгүй болоход яах вэ? Та файл байгаа эсэх, түүнийг унших эрхийг file_exists болон is_readable аргыг ашиглан урьдчилан шалгаж болно.

Жагсаалт 7. file_exists болон уншигдахуйг ашиглах
$ файлын нэр = "миний файл"; хэрэв (файлын_байдаг($ файлын нэр) && уншигдах боломжтой ($ файлын нэр)) ( $fh = fopen($файлын нэр, "r"); # Боловсруулж байна fclose($fh); )

Гэсэн хэдий ч бодит байдал дээр энэ програм нь таны даалгаварт хэт их ачаалал өгөх болно. Fopen-ийн буцаасан утгыг зохицуулах нь илүү энгийн бөгөөд үнэн зөв юм.

if ($fh = fopen($файлын нэр, "r")) ( # Боловсруулж байна fclose($fh); )

Fopen амжилтгүй болвол False-г буцаадаг тул энэ нь зөвхөн файлыг нээх боломжтой тохиолдолд л боловсруулагдах болно. Мэдээж хэрэг, хэрэв файл байхгүй эсвэл унших боломжгүй бол буцах утга сөрөг байх болно. Тиймээс ийм шалгалт нь бүх боломжит асуудлууд руу орох урхи юм. Мөн файлыг нээх боломжгүй тохиолдолд та програмаас гарах эсвэл алдааны мэдэгдэл харуулах боломжтой.

Fopen-ийн нэгэн адил file_get_contents, file, readfile функцууд нь файлыг нээх эсвэл боловсруулах боломжгүй тохиолдолд False буцаана. Хэрэв алдаа гарвал fgets, fgetss, fread, fscanf, fclose функцууд мөн False-г буцаана. Мэдээжийн хэрэг, fclose-г эс тооцвол та тэдний буцаах үр дүнг аль хэдийн боловсруулсан байх магадлалтай. fclose-ийн хувьд, хэрэв файлын бариул зөв хаагдахгүй бол хийж болох зүйл байхгүй тул fclose-ийн буцаах утгыг шалгах нь ерөнхийдөө хэт их хэрэг болно.

Сонголт чинийх

PHP нь файлуудыг унших, задлан шинжлэх үр дүнтэй аргуудаар дутахгүй. Fread гэх мэт сонгодог функцууд танд ихэнх тохиолдолд найдвартай үйлчилдэг, эсвэл хэрэв энэ нь танд ажлаа дуусгахад шаардлагатай бол readfile-ийн энгийн байдалд илүү их татагдах болно. Сонголт нь таны хийх гэж байгаа зүйлээс шууд хамаарна.

Хэрэв та их хэмжээний өгөгдөл боловсруулж байгаа бол файлыг дараагийн хуваах болон sprintf командуудтай хослуулан ашиглахаас fscanf илүү ашигтай, үр дүнтэй байх болно. Хэрэв та зүгээр л их хэмжээний текстийг бага зэрэг өөрчилсөн бол файл , file_get_contents эсвэл файлын файлыг унших функцийг ашиглах нь илүү утга учиртай байх болно. Энэ шийдэл нь PHP-г кэш хийх эсвэл түр зуурын прокси сервер үүсгэх үед зөв байх болно.

PHP нь файлуудтай ажиллах олон хэрэгслээр хангадаг. Тус бүрийг илүү сайн мэдэж, таны ажиллаж буй төсөлд ямар хэрэгсэл хамгийн тохиромжтой болохыг олж мэдээрэй. Танд өргөн сонголттой програм хангамжийн хэрэгслүүдийг санал болгож, тэдгээрийг хамгийн үр дүнтэй ашиглах, PHP ашиглан файлуудаа боловсруулахад таатай байх болно.

Сүүлийн шинэчлэлт: 2015/11/1

Ихэнх програмчлалын хэлнүүдийн нэгэн адил PHP нь мэдээлэл хадгалах аргуудын нэг болох файлуудтай ажиллахыг дэмждэг.

Файл унших, бичих

Файлуудыг нээх, хаах

PHP дээр файл нээхийн тулд fopen() функц тодорхойлогддог. Энэ нь дараах тодорхойлолттой: resource fopen(string $файлын нэр, string $mode) . Эхний $filename параметр нь файлд хүрэх замыг илэрхийлдэг бол хоёр дахь нь нээх горим юм. Нээх зорилго болон файлын төрлөөс хамааран энэ параметр нь дараах утгыг авч болно.

    "r" : Файлыг зөвхөн унших боломжтой. Хэрэв файл байхгүй бол худал буцаана

    "r+" : Файл нь зөвхөн унших боломжтой бөгөөд бичих боломжтой. Хэрэв файл байхгүй бол худал буцаана

    "w" : Файл бичихээр нээгдсэн. Хэрэв ийм файл байгаа бол дарж бичнэ, үгүй ​​бол үүсгэнэ.

    "w+" : Файлыг бичих, унших боломжтой. Хэрэв ийм файл байгаа бол дарж бичнэ, үгүй ​​бол үүсгэнэ.

    "a" : Файл бичихээр нээгдсэн. Хэрэв ийм файл аль хэдийн байгаа бол өгөгдлийг файлын төгсгөлд бичиж, хуучин өгөгдөл хэвээр үлдэнэ. Хэрэв файл байхгүй бол түүнийг үүсгэнэ

    "a+" : Файл унших, бичихэд нээлттэй байна. Хэрэв файл аль хэдийн байгаа бол өгөгдлийг файлын төгсгөлд хавсаргана. Хэрэв файл байхгүй бол түүнийг үүсгэнэ

fopen функцийн гаралт нь файлын тодорхойлогч байх болно. Энэ бариул нь файлын үйлдлүүд болон файлыг хаахад ашиглагддаг.

Ажил дууссаны дараа файлын тодорхойлогчийг параметр болгон авдаг fclose() функцийг ашиглан файлыг хаах ёстой. Жишээлбэл, файлыг нээж, хаацгаая:

$fd = fopen("form.php", "r") эсвэл die("файлыг нээж чадсангүй"); fclose($fd);

or die("алдааны текст") бүтэц нь fopen функц файлыг нээх боломжгүй тохиолдолд скрипт ажиллахаа больж, зарим алдааны мессежийг харуулах боломжийг олгодог.

Файл уншиж байна

Та файлыг уншихын тулд хэд хэдэн функцийг ашиглаж болно. Мөр мөрөөр уншихын тулд fgets() функцийг ашигладаг бөгөөд энэ нь файлын тодорхойлогчийг хүлээн авч, нэг мөр уншдаг. Бүх файлыг мөр мөрөөр нь авч үзье:

fgets()-г дуудах бүрт РНР заагчийг уншсан мөрийн төгсгөлд байрлуулна. Файлын төгсгөлийг хянахын тулд feof() функцийг ашигладаг бөгөөд файл дууссаны дараа үнэнийг буцаана. Файлын төгсгөлд хүрэх хүртэл бид fgets() функцийг ашиглаж болно.

Файлыг бүхэлд нь уншиж байна

Энэ тохиолдолд бид файлыг тодорхой нээж, бариулыг олж аваад файлыг хаах шаардлагагүй.

Уншихыг хориглох

Та мөн fread() функцийг ашиглан файлаас тодорхой тооны байт унших боломжтой.

fread() функц нь унших файлын бариул, унших байтны тоо гэсэн хоёр параметрийг авдаг. Блок унших үед файл дахь заагч тухайн блокийн төгсгөлд шилжинэ. Мөн feof() функцийг ашиглан та файлын гүйцэтгэлийг хянах боломжтой.

Файл бичих

Файл бичихийн тулд дараах мөрийг файлд бичдэг fwrite() функцийг ашиглана.

Өөр fputs() функц ижил төстэй ажилладаг:

Файл заагчтай ажиллах

Файлыг "w" горимд унших, бичихэд нээх үед файлын заагчийг эхэнд байрлуулна. Өгөгдлийг унших үед PHP файл дахь заагчийг уншсан өгөгдлийн блокийн төгсгөлд шилжүүлдэг. Гэсэн хэдий ч бид файл дахь заагчийг гараар удирдаж, дурын байршилд тохируулах боломжтой. Үүнийг хийхийн тулд та функцийг ашиглах хэрэгтэй fseekдараах албан ёсны тодорхойлолттой байна.

Int fseek (нөөц $handle , int $offset [, int $whence = SEEK_SET ])

$handle параметр нь файлын бариулыг илэрхийлнэ. $offset параметр нь унших/бичиж эхлэх файлын эхлэлтэй харьцуулахад байтаар хэмжигдэх офсет юм. Гурав дахь нэмэлт параметр нь офсетийг хэрхэн тохируулахыг зааж өгдөг. Энэ нь гурван утгыг авч болно:

    SEEK_SET : анхдагч утга, файлын эхлэлтэй харьцуулахад офсет байтаар офсетийг тогтоодог

    SEEK_CUR : файлын одоогийн байрлалын эхлэлтэй харьцуулахад офсет байтаар офсетийг тогтоодог.

    SEEK_END : файлын төгсгөлөөс байтыг офсет хийхээр тохируулна

Хэрэв заагчийг амжилттай суулгасан бол fseek() функц 0, заагч амжилтгүй бол -1-ийг буцаана.

Функцийг ашиглах жишээ:

$fd = fopen("hello.txt", "w+") or die("файлыг нээж чадсангүй"); $str = "Сайн уу дэлхий!"; // fwrite бичих мөр($fd, $str); // эхлэлийн мөрийг бичнэ fseek($fd, 0); // файлын заагчийг эхэнд байрлуулах fwrite($fd, "Oink"); // эхэнд мөр бичих fseek($fd, 0, SEEK_END); // заагчийг төгсгөлд байрлуул fwrite($fd, $str); // төгсгөлд өөр мөр бичих fclose($fd);