Php файлыг төгсгөлөөс нь уншиж байна. PHP: PHP файлыг уншина уу. PHP дээр файлуудтай ажиллах: унших, бичих, зөвлөмж өгөх. Файл үүсгэх, устгах

PHP

file_exists("test.txt")//Файл байгаа юу? filesize("test.txt");//Файлын хэмжээг олж мэдэх //Хугацаа тэмдэглэгээг буцаасан: fileatime("test.txt");//Файлд хамгийн сүүлд хандсан огноо //date("d M Y" , $atime); filemtime("test.txt");//Файлыг өөрчилсөн огноо //огноо("d M Y", $mtime); filectime("test.txt");//Файл үүсгэсэн огноо (Windows) //огноо("d M Y", $ctime);

Файлууд: үйлдлийн горимууд

PHP

нөөцийн fopen (мөр файлын нэр, мөрийн горим) // нөөц - амжилттай бол файл руу заагч буцаана, алдаа гарсан тохиолдолд ХУДАЛ буцаана.
Үйлдлийн горим Тодорхойлолт
r зөвхөн унших боломжтой файлыг нээх;
r+ унших, бичих файлыг нээх;
w файлыг зөвхөн бичих зорилгоор нээнэ. Хэрэв байгаа бол файлын одоогийн агуулгыг устгана. Одоогийн байрлалыг эхэнд нь тохируулсан;
w+ унших, бичих файлыг нээх. Хэрэв байгаа бол файлын одоогийн агуулгыг устгана. Одоогийн байрлалыг эхэнд нь тохируулсан;
А бичихийн тулд файлыг нээнэ үү. Одоогийн байрлалыг файлын төгсгөлд тохируулсан;
a+ унших, бичих файлыг нээх. Одоогийн байрлалыг файлын төгсгөлд тохируулсан;
б хоёртын файлыг боловсруулах. Windows дээр хоёртын файлуудтай ажиллахад энэ туг шаардлагатай.

PHP дээр файл нээх, хаах

PHP

$fi = fopen("test.html", "w+") or die("Алдаа"); //Жишээ нь $fi = fopen("http://www.you/test.html", "r"); $fi = fopen("http://ftp.you/test.html", "r"); //Хаах fclose($fi)

PHP дээр файл уншиж байна

PHP

//Файлыг унших fread(int fi, int length) $str = fread($fi, 5); // Эхний 5 тэмдэгтийг уншина echo $str; // курсор хөдөлсөн тул $str = fread($fi, 12); // Дараагийн 12 тэмдэгтийг уншина echo $str; fgets(int fi[, int урт]) // Файлаас мөр унших fgetss(int fi, int урт [, мөр зөвшөөрөгдөх боломжтой]) // Файлаас мөр уншиж, HTML хаягуудыг устгах // string зөвшөөрөгдөх - хаягууд үлдээх хэрэгтэй fgetc(int fi) //Файлаас тэмдэгт уншина

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

PHP файлууд дахь курсорыг удирдах

PHP

int fseek(int fi, int offset [, int хаанаас]) //Курсорыг тохируулах // int fi - файлын заагч //offset - зөөх тэмдэгтүүдийн тоо. // хаанаас: //SEEK_SET - хөдөлгөөн файлын эхнээс эхэлнэ; //SEEK_CUR - хөдөлгөөн одоогийн байрлалаас эхэлнэ; //SEEK_END - хөдөлгөөн нь файлын төгсгөлөөс эхэлнэ. fseek($fi, -10, SEEK_END); //Сүүлийн 10 тэмдэгтийг унших $s = fread($fi, 10); $pos = ftell($fi); //Одоогийн байрлалыг олох rewind($f)//курсорыг дахин тохируулах bool feof($f) //файлын төгсгөл

PHP дээр файлууд (өгөгдлүүд) дээр шууд ажиллах

PHP

массив файл(мөр файлын нэр) // Файлын агуулгыг массив хэлбэрээр авах // file_get_contents(string filename) өгөгдөлтэй шууд ажиллах өөр нэг сонголт // Унших (файлыг бүхэлд нь нэг мөрөнд авах) // бичих файл (эхэндээ дарж бичсэн) file_put_contents(мөр файлын нэр, холимог өгөгдөл[,int flag]); //FILE_APPEND // Файлын төгсгөл хүртэл бичих: file_put_contents("test.txt", "data", FILE_APPEND); //Хэрэв та массив бичвэл $array = array("I", "live"); file_put_contents("test.txt",$array); //дараа нь бид "Ilive"-г авна.

Php дахь файлуудыг удирдах

PHP

хуулбар (мөрийн эх сурвалж, мөрийн очих газар); // Файлын нэрийг өөрчлөх(str oldname, str newname); // Файлыг салгах (мөр файлын нэр) нэрийг өөрчлөх; // Файл устгаж байна

PHP сервер рүү файл байршуулж байна

//PHP.ini тохиргоо file_uploads (асаалттай|унтраах) // файл байршуулахыг зөвшөөрөх эсвэл зөвшөөрөхгүй upload_tmp_dir // байршуулсан файлуудын түр хавтас. анхдагчаар түр зуурын хавтас upload_max_filesize (анхдагч = 2 Mb) // max. байршуулах файлын хэмжээ post_max_size // илгээсэн маягтын нийт хэмжээ (load_max_filesize-ээс том байх ёстой) // Энгийн байршуулах

HTML

Сервер дээрх файлуудтай ажиллах

PHP

//Өгөгдөл хүлээн авах $tmp = $_FILES["userfile"]["tmp_name"]; $name = $_FILES["userfile"]["name"]; //Файлыг зөөх move_uploaded_file($tmp, нэр); зөөвөрлөсөн_файл($tmp, "байршуулах/".нэр); // файлыг байршуулах хавтас руу дахин чиглүүлэх // одоогийн файлтай харьцуулахад // $_FILES массивт юу байна $_FILES["userfile"]["name"] // файлын нэр, жишээ нь, test.html $_FILES[ "userfile"][" tmp_name"] // түр файлын нэр (зам) $_FILES["userfile"]["size"] // файлын хэмжээ $_FILES["userfile"]["төрөл"] // файлын төрөл $ _FILES["userfile"] ["алдаа"] // 0 - алдаа байхгүй, тоо - тийм мөр fgets(нөөцийн бариул [, int урт])

Бариулаар заасан файлын тодорхойлогчоос уншсан 1 байт урттай мөрийг буцаана. Уншсан байтын тоо 1-д хүрэх, мөрийн төгсгөлд (буцах утгад багтсан) эсвэл файлын төгсгөлд (аль нь түрүүлж ирсэн) хүрэх үед уншилт дуусна. Хэрэв уртыг заагаагүй бол анхдагчаар 1 килобайт буюу 1024 байт байна.

Хэрэв алдаа гарвал функц буцаж ирнэ ХУДАЛ .

Хамгийн нийтлэг алдаанууд:

Программистууд "С" функцүүдийн семантикт дассан fgets(), файлын төгсгөлийн (EOF) тугийг хэрхэн буцаах ялгааг харгалзан үзэх ёстой.

Файлын заагч нь хүчинтэй байх ёстой бөгөөд функцээр амжилттай нээгдсэн файлыг зааж өгөх ёстой fopen()эсвэл fsockopen() .

Энгийн жишээг доор харуулав.


Жишээ 1. Файлыг мөр мөрөөр унших

$ бариул = fopen("/tmp/inputfile.txt" , "r" );
байхад (! feof ($ бариул )) (
$ буфер = fgets ($ бариул, 4096);
echo $buffer;
}
fclose($ бариул);
?>

Сэтгэгдэл: PHP 4.2.0 хувилбараас эхлэн уртын параметр нь сонголттой болсон. Хэрэв энэ параметрийг орхигдуулсан бол мөрийн уртыг 1024 гэж үзнэ. PHP 4.3-аас харахад уртын параметрийг орхигдуулсан нь урсгалыг мөрийн төгсгөл хүртэл уншихад хүргэдэг. Хэрэв файлын ихэнх мөрүүд 8 килобайтаас урт байвал скриптийн ашигладаг нөөцийн талаархи хамгийн үр дүнтэй шийдвэр бол мөрийн дээд хэмжээг зааж өгөх явдал юм.

Сэтгэгдэл:Энэ функц нь PHP 4.3-аас эхлэн хоёртын өгөгдлийг зөв боловсруулж чадна. Өмнөх хувилбаруудад ийм функц байгаагүй.

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 ашиглан файлуудаа боловсруулахад таатай байх болно.

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() функцүүдийн дараалсан дуудлагатай ижил - бичигдсэн байтуудын тоог буцаана.

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contents — Файлын агуулгыг мөр болгон уншина

Тодорхойлолт

Мөр file_get_contents (мөр $ файлын нэр [, bool $use_include_path = худал [, нөөц $контекст [, int $offset = -1 [, int $ maxlen ]]]])

Энэ функц нь функцтэй төстэй файл()цорын ганц ялгаа нь file_get_contents()заасан офсетээс эхлээд хамгийн их байт хүртэл файлын агуулгыг буцаана. Амжилтгүй болсон тохиолдолд, file_get_contents()буцаж ирнэ ХУДАЛ.

Функцийг ашиглах file_get_contents()Хэрэв таны үйлдлийн систем дэмждэг бол энэ функц нь гүйцэтгэлийг сайжруулахын тулд файлаас санах ойн зураглалын аргыг ашигладаг тул та файлын агуулгыг бүхэлд нь авах шаардлагатай бол илүү тохиромжтой.

Сэтгэгдэл:

Хэрэв та зай гэх мэт тусгай тэмдэгт агуулсан URI нээж байгаа бол URI-г ашиглан кодлох хэрэгтэй urlencode().

Параметрүүдийн жагсаалт

Уншиж буй файлын нэр.

Замыг_оруулна уу

Сэтгэгдэл:

PHP 5-аас хойш та тогтмолыг ашиглаж болно FILE_USE_INCLUDE_PATHоруулах замаас файл хайх.

контекст

Функцийг ашиглан үүсгэсэн хүчинтэй контекст нөөц stream_context_create(). Хэрэв тусгай контекст ашиглах шаардлагагүй бол утгыг дамжуулж энэ параметрийг алгасаж болно NULL.

Анхны урсгалыг уншиж эхлэх офсет.

Алсын файлуудтай ажиллах үед офсет хайлтыг дэмждэггүй. Орон нутгийн бус файлууд дээр офсет олохыг оролдох нь жижиг офсетуудад ажиллах боломжтой боловч буферлагдсан урсгал дээр ажиллаж байгаа тул үр дүн нь урьдчилан таамаглах боломжгүй юм.

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

Буцах утгууд

Функц нь уншсан өгөгдлийг буцаана эсвэл ХУДАЛалдаа гарсан тохиолдолд.

Анхаар

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

Алдаа

Түвшингийн алдаа үүснэ ЦАХИМ АНХААРУУЛГА, хэрэв файлын нэрийн параметр олдохгүй бол maxlength параметр нь тэгээс бага эсвэл урсгал дахь офсет офсет хайлт амжилтгүй болно.

Жишээ

Жишээ №1 Вэб сайтын нүүр хуудасны эх кодыг авч үзүүл

$ homepage = file_get_contents("http://www.example.com/");
echo $нүүр хуудас ;
?>

Жишээ №2 оруулах зам дахь файлуудыг хайж олох

// <= PHP 5
$file = file_get_contents("./people.txt" , үнэн );
// > PHP 5
$file = file_get_contents("./people.txt" , FILE_USE_INCLUDE_PATH );
?>

Жишээ №3 Файлын хэсгийг унших

// 21-р тэмдэгтээс эхлэн 14 тэмдэгт уншина уу
$section = file_get_contents("./people.txt" , NULL , NULL , 20 , 14 );
var_dump($ хэсэг);
?>

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

string(14) "lle Bjori Ro"

Жишээ №4 Урсгалын контекст ашиглах

// Сэдэв үүсгэх
$opts = массив(
"http" =>массив(
"method" => "GET" ,
"header" => "Хэл хүлээн зөвшөөрөх: en\r\n" .
"Күүки: foo=bar\r\n"
);

$контекст = stream_context_create ($opts);

// Дээрх HTTP толгойг ашиглан файлыг нээнэ үү
$file = file_get_contents ("http://www.example.com/" , худал , $контекст);
?>

Хаах_мэдэгдэл. Өгөгдөл дуусах мөчид PHP үүнийг "SSL: Fatal Protocol Error" гэж мэдээлэх болно. Үүнийг тойрч гарахын тулд та алдааны_тайлагналыг E_АНХААРУУЛГА-г оруулахгүй түвшинд тохируулах хэрэгтэй. PHP 4.3.7 ба түүнээс дээш хувилбарууд нь боодол ашиглан урсгалыг нээх үед сервер талд асуудалтай IIS байгааг илрүүлж чадна. https://бөгөөд анхааруулга харуулахгүй. Хэрэв та хэрэглэж байгаа бол fsockopen()бүтээхийн төлөө ssl:// socket, энэ анхааруулгыг илрүүлж, таслан зогсоох нь таны үүрэг юм.