การทำงานกับไฟล์ใน PHP: การเปิด, การเขียน, การอ่าน วิธีอ่านไฟล์อย่างถูกต้องโดยใช้ PHP Php อ่านจากไฟล์

PHP

file_exists("test.txt")//มีไฟล์อยู่หรือไม่? ขนาดไฟล์ ("test.txt"); // ค้นหาขนาดไฟล์ // การประทับเวลาจะถูกส่งกลับ: fileatime ("test.txt"); // วันที่เข้าถึงไฟล์ครั้งล่าสุด // date ("d M Y" , $เวลา); filemtime("test.txt");//วันที่แก้ไขไฟล์ //date("d M Y", $mtime); filectime("test.txt");//วันที่สร้างไฟล์ (Windows) //date("d M Y", $ctime);

ไฟล์: โหมดการทำงาน

PHP

ทรัพยากร fopen (ชื่อไฟล์สตริง, โหมดสตริง) // ทรัพยากร - ส่งคืนตัวชี้ไปยังไฟล์ในกรณีที่สำเร็จหรือ FALSE ในกรณีที่เกิดข้อผิดพลาด
โหมดการทำงาน คำอธิบาย
เปิดไฟล์แบบอ่านอย่างเดียว
ร+ เปิดไฟล์เพื่ออ่านและเขียน
เปิดไฟล์เพื่อการเขียนเท่านั้น หากมีอยู่ เนื้อหาปัจจุบันของไฟล์จะถูกทำลาย ตำแหน่งปัจจุบันถูกตั้งค่าไว้ที่จุดเริ่มต้น
มี+ เปิดไฟล์เพื่ออ่านและเขียน หากมีอยู่ เนื้อหาปัจจุบันของไฟล์จะถูกทำลาย ตำแหน่งปัจจุบันถูกตั้งค่าไว้ที่จุดเริ่มต้น
เปิดไฟล์เพื่อเขียน ตำแหน่งปัจจุบันถูกตั้งค่าไว้ที่ส่วนท้ายของไฟล์
เอ+ เปิดไฟล์เพื่ออ่านและเขียน ตำแหน่งปัจจุบันถูกตั้งค่าไว้ที่ส่วนท้ายของไฟล์
ประมวลผลไฟล์ไบนารี จำเป็นต้องใช้แฟล็กนี้เมื่อทำงานกับไฟล์ไบนารีบน Windows

การเปิดและปิดไฟล์ใน PHP

PHP

$fi = fopen("test.html", "w+") หรือ 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 length]) // อ่านบรรทัดจากไฟล์ fgetss(int fi, int length [, อนุญาตให้ใช้สตริงได้]) // อ่านบรรทัดจากไฟล์และละทิ้งแท็ก HTML // อนุญาตสตริง - แท็กที่ ต้องปล่อยไว้ 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, สืบค้น_END); //อ่านอักขระ 10 ตัวสุดท้าย $s = fread($fi, 10); $pos = ftell($fi); //ค้นหาตำแหน่งปัจจุบัน ย้อนกลับ($f)//รีเซ็ตเคอร์เซอร์บูล feof($f) //สิ้นสุดไฟล์

ทำงานโดยตรงกับไฟล์ (ข้อมูล) ใน PHP

PHP

array file(ชื่อไฟล์สตริง) // รับเนื้อหาของไฟล์ในรูปแบบของอาร์เรย์ // อีกทางเลือกหนึ่งสำหรับการทำงานโดยตรงกับข้อมูล file_get_contents(ชื่อไฟล์สตริง) // การอ่าน (รับไฟล์ทั้งหมดในบรรทัดเดียว) // เขียนถึง ไฟล์ (เขียนทับในตอนแรก) file_put_contents (ชื่อไฟล์สตริง, ข้อมูลผสม [, ธง int]); //FILE_APPEND // เขียนต่อท้ายไฟล์: file_put_contents("test.txt", "data", FILE_APPEND); //ถ้าคุณเขียนอาร์เรย์ $array = array("I", "live"); file_put_contents("test.txt",$array); //แล้วเราก็จะได้ "Ilive"

การจัดการไฟล์ใน php.ini

PHP

คัดลอก (แหล่งที่มาของสตริง, ปลายทางของสตริง); // คัดลอกการเปลี่ยนชื่อไฟล์ (str oldname, str newname); // เปลี่ยนชื่อไฟล์ยกเลิกการเชื่อมโยง (ชื่อไฟล์สตริง); // กำลังลบไฟล์

การอัพโหลดไฟล์ไปยังเซิร์ฟเวอร์ PHP

//การตั้งค่า PHP.ini file_uploads (เปิด|ปิด) // อนุญาตหรือไม่อนุญาตให้อัพโหลดไฟล์ upload_tmp_dir // โฟลเดอร์ชั่วคราวสำหรับไฟล์ที่อัพโหลด โดยค่าเริ่มต้น โฟลเดอร์ชั่วคราว upload_max_filesize (ค่าเริ่มต้น = 2 Mb) // สูงสุด ขนาดไฟล์อัพโหลด post_max_size // ขนาดรวมของแบบฟอร์มที่ส่ง (ต้องใหญ่กว่า upload_max_filesize) // อัพโหลดแบบง่าย

HTML

การทำงานกับไฟล์บนเซิร์ฟเวอร์

PHP

//ยอมรับข้อมูล $tmp = $_FILES["userfile"]["tmp_name"]; $name = $_FILES["userfile"]["name"]; //ย้ายไฟล์ move_uploaded_file($tmp, name); move_uploaded_file($tmp, "อัพโหลด/".ชื่อ); // เปลี่ยนเส้นทางไฟล์ไปยังโฟลเดอร์อัพโหลด // เกี่ยวข้องกับไฟล์ปัจจุบัน // มีอะไรอยู่ในอาร์เรย์ $_FILES $_FILES["userfile"]["name"] // ชื่อไฟล์ เช่น test.html $_FILES[ "userfile"][" tmp_name"] // ชื่อไฟล์ชั่วคราว (พาธ) $_FILES["userfile"]["size"] // ขนาดไฟล์ $_FILES["userfile"]["type"] // ประเภทไฟล์ $ _FILES["userfile"] ["error"] // 0 - ไม่มีข้อผิดพลาด ตัวเลข - ใช่

PHP ปรากฏช้ากว่าภาษาโปรแกรมมากทำให้ตำแหน่งของพวกเขาแข็งแกร่งขึ้นและกำหนดแนวคิดทั่วไปเกี่ยวกับไวยากรณ์ ตรรกะ ตัวแปร และอ็อบเจ็กต์โปรแกรมอื่น ๆ ไฟล์และฟังก์ชันสำหรับการทำงานกับไฟล์เหล่านั้นไม่มีความคืบหน้าและแม้แต่ปัญหาการเข้ารหัสไฟล์ซึ่งเกิดขึ้นด้วยเหตุผลตามธรรมชาติก็ไม่ได้นำไปสู่วิธีแก้ปัญหาใหม่อย่างสิ้นเชิง

หมายเหตุทั่วไป

งานหลักเกี่ยวกับไฟล์ ไม่ว่าจะเป็นการเปิด การอ่าน/การเขียน และการปิดไฟล์ คุณสามารถใช้ฟังก์ชั่นการบล็อก/เลิกบล็อกการเข้าถึงไฟล์ในขณะที่กำลังประมวลผล คุณสามารถตั้งค่าตำแหน่งการอ่าน/เขียนในไฟล์ - ทุกอย่างเหมือนเดิมในอดีตอันไกลโพ้น

จุดสำคัญใน PHP คือฟังก์ชั่นมากมายสำหรับการทำงานกับไฟล์และตัวเลือกในการใช้งาน ในทางปฏิบัติก็เพียงพอแล้วที่จะใช้ตัวเลือกที่เรียบง่าย แต่ใช้งานได้ ประการแรกไฟล์คือหน่วยความจำโปรแกรม คุณสามารถเก็บข้อมูลไว้ในนั้นได้ วัตถุประสงค์ของโปรแกรมใดๆ วัตถุประสงค์ของเว็บไซต์ใดๆ คือการนำเสนอ ประมวลผล และรับรองความปลอดภัยของข้อมูล

สถานการณ์ที่สำคัญ

ก่อนหน้านี้ ข้อกำหนดด้านความเข้ากันได้ อย่างน้อยจากล่างขึ้นบนก็ไม่สั่นคลอน กล่าวคือ โปรแกรมที่ครั้งหนึ่งเขียนด้วยภาษาโปรแกรมเวอร์ชันหนึ่ง จะถูกคอมไพล์/ตีความในเวอร์ชันถัดไปอย่างเหมาะสม ในการเขียนโปรแกรมสมัยใหม่ไม่เป็นเช่นนี้ ข้อกำหนดสำหรับความเข้ากันได้ของโครงสร้างทางวากยสัมพันธ์ของภาษาได้กลายเป็นเรื่องของประวัติศาสตร์ และการต่อสู้ระหว่างสไตล์และเครื่องมือการเขียนโปรแกรมและเวอร์ชันของเครื่องมือบางอย่างได้กลายเป็นบรรทัดฐานของชีวิตของพวกเขา

การทำงานกับไฟล์เช่นเดียวกับฐานข้อมูลมีความสำคัญพอๆ กับอินเทอร์เฟซของไซต์ อันแรกควรสร้างขึ้นในลักษณะที่เมื่อเปลี่ยนแพลตฟอร์ม โฮสติ้ง หรือเวอร์ชันภาษา ไม่จำเป็นต้องเปลี่ยนโค้ดของไซต์ อินเทอร์เฟซสำหรับการทำงานกับไฟล์จะต้องรวมอยู่ในสคริปต์แยกต่างหากและตรวจสอบความเข้ากันได้อย่างสมบูรณ์ เช่นเดียวกับการออกแบบไซต์จะต้องปรับให้เข้ากับอุปกรณ์ เบราว์เซอร์ใด ๆ อย่างเพียงพอ และมอบฟังก์ชันการทำงานของไซต์ที่เหลือที่มีความสามารถเหมือนกัน

อ่านแล้วเปลี่ยนแปลงตัวเอง

โปรแกรมสามารถเปลี่ยนแปลงตัวเองได้ กล่าวคือ สคริปต์สามารถปรับปรุงได้หรือไม่? จนถึงทุกวันนี้ คำถามนี้ทำให้หลายคนสนใจ แต่งานนี้ฟังดูมีประโยชน์มากกว่ามาก: PHP อ่านไฟล์ PHP นักพัฒนาไม่สามารถแก้ไขปัญหาใดปัญหาหนึ่งด้วยการเขียนโค้ดเฉพาะได้เสมอไป บางครั้งจำเป็นต้องเปลี่ยนแปลงเมื่อผู้เยี่ยมชมมาที่ไซต์และกำหนดคำถามที่ไม่ได้คาดการณ์ไว้ในขั้นตอนการพัฒนา

เช่นเดียวกับในกรณีอื่นๆ ก่อนอื่นคุณต้องเปิดไฟล์ก่อน ไม่สำคัญว่าไฟล์นี้มีอยู่หรือไม่ หากทราบว่ามีไฟล์อยู่ (ฟังก์ชัน file_exists() ให้คำตอบเชิงบวก) ฟังก์ชัน fopen() จะใช้กับการเข้าถึง 'r', 'r+', 'a', 'a+' หากยังไม่มีไฟล์ ให้เข้าถึง 'a', 'a+', 'w', 'w+' ผลลัพธ์ของการเปิดไฟล์จะเป็นคำอธิบาย ไฟล์ถูกปิดด้วยฟังก์ชัน fclose()

สะดวกในการใช้ PHP เพื่ออ่านไฟล์ลงในอาเรย์เมื่อไม่จำเป็นต้องประมวลผลในขณะที่อ่าน

ถ้า (file_exists($fName)) (

$aLines = ไฟล์($fName)

ในตัวเลือกนี้ แต่ละบรรทัดของไฟล์จะเข้าสู่องค์ประกอบอาร์เรย์ตามลำดับ ควรสังเกตว่าฟังก์ชัน file() หรือ file_get_contents() ไม่จำเป็นต้องเปิดไฟล์และปิด

เมื่อไฟล์อินพุตมีขนาดใหญ่เกินไปและคุณต้องการหาข้อมูลเพียงเล็กน้อย หรือด้วยเหตุผลอื่น คุณสามารถใช้ PHP เพื่ออ่านไฟล์ทีละบรรทัดได้ PHP มอบความสามารถในการทำเช่นนี้ด้วยฟังก์ชัน fgets() และ fgetc()

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

ในขณะที่ ((เท็จ !== ($cLine = fgets($fvs, 2000)))) (

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

ตัวเลือกทั้งสองทำงานได้อย่างไร้ที่ติ อย่างไรก็ตาม เมื่อดำเนินการอ่าน PHP ของไฟล์ PHP เพื่อการแก้ไขในภายหลัง ควรใช้ความระมัดระวัง ไม่สามารถคาดการณ์ได้ว่าผู้เยี่ยมชมจะใช้ข้อมูลดังกล่าวอย่างไรในขั้นตอนการพัฒนาเว็บไซต์เสมอไป จะดีกว่าหากสคริปต์มีการเปลี่ยนแปลงภายในฟังก์ชันของไซต์ และผู้เข้าชมไม่สามารถควบคุมการเปลี่ยนแปลงนี้ได้ รวมถึงผู้ดูแลระบบทรัพยากรด้วย

กำลังบันทึกผลลัพธ์

ข้อมูลที่ได้รับและอัปเดตจะถูกเขียนลงในไฟล์โดยฟังก์ชัน fputs() ทีละบรรทัด หรือโดยฟังก์ชัน file_put_contents() โดยรวม

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

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

ฝูง($fvs, LOCK_EX)

$cLine = "1 บรรทัด". CH(10)

fputs($fvs, $cLine)

$cLine = "2 บรรทัด" . CH(10)

fputs($fvs, $cLine)

ฝูง($fvs, LOCK_UN)

ในตัวเลือกการบันทึกทีละบรรทัด คุณสามารถจัดการข้อมูลระหว่างกระบวนการบันทึกได้ ในกรณีที่สอง สตริงหรืออาร์เรย์ที่เขียนจะถูกวางในไฟล์ทั้งหมด

$file = "scData.php"

$cContents = file_get_contents($ไฟล์)

// เพิ่มรายการ

$cContents .= "รายการใหม่\n"

// เขียนไฟล์กลับ

file_put_contents($ไฟล์, $cContents)

การอ่านและเขียนไฟล์ PHP เป็นเรื่องง่ายและเป็นธรรมชาติ อย่างไรก็ตาม สิ่งสำคัญที่ต้องจำไว้คือ แต่ละไฟล์มีชื่อ นามสกุล และเส้นทาง (โฟลเดอร์) เพื่อให้สคริปต์ PHP สามารถอ่านและเขียนไฟล์ได้ สคริปต์นี้จะต้องมีสิทธิ์ที่เหมาะสม สิ่งเหล่านี้จะถูกเปิดเผยโดยอัตโนมัติบนโฮสติ้ง แต่ในบางกรณี พวกมันจำเป็นต้องได้รับการขยาย

ในบางกรณี อาจเป็นที่พึงปรารถนาที่จะตรวจสอบผลลัพธ์โดยทำการทดสอบการอ่าน การเขียนไฟล์ PHP จำเป็นต้องทำเช่นนี้ในระหว่างการพัฒนา แต่ในบางกรณี เพื่อประโยชน์ด้านความปลอดภัยหรือความน่าเชื่อถือของไซต์ การตรวจสอบการบันทึกข้อมูลถือเป็นสิ่งสำคัญ

คุณสมบัติที่เป็นลักษณะเฉพาะของ PHP, MySQl, JavaScript และโดยเฉพาะเบราว์เซอร์: ปล่อยให้ข้อผิดพลาดบางอย่างเกิดขึ้นอย่างเงียบๆ “ไม่รู้จัก ไม่ได้ทำ...” ไม่ใช่แนวปฏิบัติที่ดีนักสำหรับเทคโนโลยีสารสนเทศระดับแนวหน้า แต่มันสอนให้ Developer ไม่ให้ทำผิดพลาด และเขียนโค้ดที่สะอาดและมีคุณภาพสูง ซึ่งก็ไม่เลวเช่นกัน

PHP และการทำงานกับเอกสารจริง

PHP การอ่านไฟล์ PHP มีประโยชน์ในทางปฏิบัติอย่างแน่นอน แต่นี่คือขอบเขตของการเขียนโปรแกรม ผู้ใช้และผู้เยี่ยมชมไซต์มีความสนใจในข้อมูลในลักษณะที่ประยุกต์ใช้ ซึ่งเขาคุ้นเคยกับการดูในรูปแบบของตารางและเอกสาร โดยเฉพาะอย่างยิ่งในรูปแบบไฟล์ *.xlsx และ *.docx เป็นไฟล์ในรูปแบบ MS Excel และ MS Word

รายการสินค้า ราคา คุณลักษณะ มักจะเกิดขึ้นในรูปแบบของตาราง ดังนั้นการอ่านไฟล์ Excel ของ PHP จึงเป็นสิ่งจำเป็น

ไลบรารี PHPExcel และ PHPWord ได้รับการพัฒนาให้ทำงานกับไฟล์ดังกล่าว อย่างไรก็ตาม เนื้อหาของไฟล์ *.xlsx และ *.docx จะถูกนำเสนอในมาตรฐาน OOXML นั่นคือเอกสารจริงที่เข้าใจได้จะถูกนำเสนอในไฟล์ zip ไฟล์ ZIP คือชุดของไฟล์ รวมถึงรูปภาพ ออบเจ็กต์ สูตร และส่วนแทรกจากโปรแกรมอื่น ไฟล์ข้อความที่นี่จะแสดงด้วยคำอธิบายในรูปแบบของแท็ก การอ่านไฟล์ดังกล่าวไม่เพียงพอ คุณต้องแยกวิเคราะห์เพื่อรับเนื้อหาและโครงสร้างเพื่อใช้และแก้ไข

ซึ่งหมายความว่าการดำเนินการอ่านจะกลายเป็นขั้นตอนการเปิดไฟล์เก็บถาวร ไลบรารีเหล่านี้เปิดไฟล์เก็บถาวรเอกสารอย่างเป็นอิสระ และมอบฟังก์ชันมากมายสำหรับการอ่าน ประมวลผล และเขียนเอกสารดังกล่าวแก่นักพัฒนา

ตาราง Excel

รวม_ครั้งเดียว 'PhpOffice/PhpExcel/IOFactory.php'

ฟังก์ชั่น scGetExcelFile($xls)(

$objPHPExcel = PHPExcel_IOFactory::load($xls)

$objPHPExcel->setActiveSheetIndex(0)

//อาร์เรย์นี้ประกอบด้วยอาร์เรย์ของสตริง

$aSheet = $objPHPExcel->getActiveSheet()

$อาร์เรย์ = อาร์เรย์()

//การรักษา

foreach($aSheet->getRowIterator() เป็น $row)(

$cellIterator = $row->getCellIterator()

foreach($cellIterator เป็น $cell)(

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

array_push($อาร์เรย์, $รายการ)

การอ่านและการประมวลผลไฟล์ Excel นั้นยากกว่าการประมวลผลเอกสาร Word มาก ตัวเลือกที่ดีที่สุดหากคุณต้องการดำเนินโครงการจริงจังในการอ่านและประมวลผลข้อมูลที่นำไปใช้คือการเรียนรู้ไลบรารี PHPWord ก่อน สิ่งนี้จะทำให้คุณได้รับประสบการณ์ที่ดีและมีความเข้าใจในประเด็นเฉพาะอย่างรวดเร็ว

เอกสารเวิร์ด

เพียงสองบรรทัด:

$oWord = \PhpOffice\PhpWord\PhpWord() ใหม่

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

ขณะนี้เอกสาร $cFileName พร้อมสำหรับการประมวลผลแล้ว จากนั้นเปิดไฟล์เก็บถาวร เลือกและวิเคราะห์เนื้อหาซึ่งสามารถแสดงบนเว็บไซต์ เปลี่ยนแปลงและเขียนกลับได้

$zipClass = ZipArchive ใหม่()

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

// อ่านเนื้อหาทั้งหมดของเอกสาร

สำหรับ ($i=0; $i<$zipClass->numFiles; $i++) (

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

$cNameInExt = substr($cNameIn, -4)

ถ้า (($cNameInExt == ".xml") || ($cNameInExt == "rels")) (

// ไฟล์ที่มีนามสกุล ".xml" และ ".xml.rels" จะถูกบันทึกไว้ในตารางเอกสาร

// แต่ละบรรทัด xml จะเขียนด้วยหมายเลขเฉพาะตามลำดับ

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

$cBodyInLen = strlen($cBodyIn)

// ไฟล์อื่นๆ ทั้งหมดจะถูกเขียนลงในโฟลเดอร์เอกสารตามที่เป็นอยู่

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

$zipClass->getFromName($cNameIn, $cWorkPath); // เนื้อหาเป็นไฟล์

ความเป็นไปได้ที่นำเสนอโดย PHP Excel และ PHP Word ช่วยให้คุณสามารถจัดการเอกสารจริงและทำให้เนื้อหามีความเกี่ยวข้องได้ตลอดเวลา ในโลกที่มีการเปลี่ยนแปลงตลอดเวลา สิ่งนี้มีความสำคัญมาก จุดศูนย์ถ่วงได้เปลี่ยนจากการใช้เทคโนโลยีคอมพิวเตอร์ในท้องถิ่นมาสู่พื้นที่อินเทอร์เน็ตเสมือนมานานแล้ว ดังนั้น การสร้างตารางและเอกสารในผลิตภัณฑ์ Microsoft ในพื้นที่จึงมีประสิทธิภาพน้อยกว่าการทำงานกับเอกสารดังกล่าวในโหมดอัตโนมัติและกึ่งอัตโนมัติบนเว็บไซต์ ซึ่งไม่เพียงแต่ผู้สร้างตารางหรือเอกสารเท่านั้นที่สามารถเข้าถึงได้ แต่ยังรวมถึงผู้บริโภคด้วย

ไฟล์ข้อความอีกชีวิตหนึ่ง

ในการประมาณครั้งแรก ไฟล์ข้อความจะง่ายกว่าไฟล์ PHP หรือเอกสารแอปพลิเคชัน อย่างไรก็ตามมีบางอย่างที่ต้องคิดเกี่ยวกับที่นี่ การดำเนินการอ่าน/เขียนของไฟล์ดังกล่าวได้ระบุไว้ข้างต้นแล้ว แต่ความหมายของไฟล์ดังกล่าวมีความสำคัญมากกว่ามาก

เนื่องจากมีการกำหนดไว้เช่นไคลเอนต์และเซิร์ฟเวอร์ (อันแรกถูกครอบงำโดย JavaScript ส่วนที่สองคือ PHP) ดังนั้นแม้แต่กลไกคุกกี้และเซสชันก็ไม่สามารถรับมือกับความจำเป็นในการถ่ายโอนข้อมูลระหว่างสคริปต์เพจหรือกระบวนการบางอย่าง

เป็นไปได้ที่จะสะท้อนถึงการเปลี่ยนแปลงที่ต้องการในฐานข้อมูล แต่สำหรับข้อดีและความเร็วทั้งหมด ไฟล์ข้อความชั่วคราวหรือถาวรขนาดเล็กอาจเป็นตัวเลือกที่น่าสนใจมากขึ้นในการส่งข้อมูล หากคุณไม่สร้างไฟล์ขนาดเล็กจำนวนมากและควบคุมขนาดของไฟล์ ไฟล์เหล่านั้นอาจเป็นเวอร์ชันเฉพาะและยืดหยุ่นของฐานข้อมูลได้

PHP การอ่านไฟล์ข้อความนั้นรวดเร็ว โดยสามารถแยกวิเคราะห์เป็นโครงสร้าง อาร์เรย์ หรือวัตถุได้ทันที อย่างหลังมีความสำคัญมากเนื่องจากช่วยให้คุณสร้างวัตถุที่อยู่นอกเวลาที่กำหนดให้กับสคริปต์ PHP ซึ่งดังที่คุณทราบจะมีอยู่บนเซิร์ฟเวอร์เท่านั้นและในขณะที่โหลดเพจเท่านั้น การตอบสนอง AJAX คือ สร้างขึ้นหรือด้วยเหตุผลอื่นที่ทำให้ล่าม PHP เปิดตัว

หากคุณคิดว่าไฟล์ข้อความเป็นเนื้อหาและโครงสร้างจากนักพัฒนา ไฟล์ PHP คือไวยากรณ์ของล่ามบวกกับตรรกะของนักพัฒนา และคำอธิบายแบบ "แท็ก" html, css, xml นั้นเป็นองค์ประกอบที่มีความหมายมากกว่า แต่มีการควบคุม ตามมาตรฐานคงที่ อาจสรุปได้ว่าอาจถึงเวลาที่ไฟล์จะได้รับเนื้อหาใหม่และนี่ควรเป็นตัวกำหนดคุณภาพและตรรกะในการใช้งาน เป็นเพราะการเขียนโปรแกรมยังไม่พร้อมสำหรับขั้นตอนต่อไปของการพัฒนา ไฟล์ในปัจจุบันจึงยังคงเป็นเพียงไฟล์ที่นักพัฒนาสร้างและกำหนดการใช้งาน

สิ่งที่น่าสนใจและมีแนวโน้มมากที่สุดคือเมื่อ PHP อ่านไฟล์ PHP อย่างอิสระเมื่อจำเป็น และ PHP แบบธรรมดาที่อ่านบรรทัดจากไฟล์จะส่งผลให้เกิดการสร้างอ็อบเจ็กต์ อย่างน้อยก็ในสถานะที่มันถูกบันทึกไว้ แนวคิดเหล่านี้ไม่ใช่แนวคิดที่คุ้นเคยนัก แต่ในโลกสมัยใหม่ทุกสิ่งเปลี่ยนแปลงไปอย่างรวดเร็ว

เชือก fgets(ตัวจัดการทรัพยากร [, int length])

ส่งกลับสตริงที่มีความยาว 1 ไบต์ที่อ่านจากตัวอธิบายไฟล์ที่ชี้ไปที่ handle การอ่านจะสิ้นสุดเมื่อจำนวนไบต์ที่อ่านถึงความยาว - 1 เมื่อถึงจุดสิ้นสุดของบรรทัด (ซึ่งรวมอยู่ในค่าที่ส่งคืน) หรือเมื่อถึงจุดสิ้นสุดของไฟล์ (ขึ้นอยู่กับว่ากรณีใดจะเกิดขึ้นก่อน) หากไม่ได้ระบุความยาว จะมีค่าเริ่มต้นอยู่ที่ 1 กิโลไบต์หรือ 1024 ไบต์

หากมีข้อผิดพลาดเกิดขึ้น ฟังก์ชันจะส่งคืน เท็จ .

ข้อผิดพลาดที่พบบ่อยที่สุด:

โปรแกรมเมอร์คุ้นเคยกับความหมายของฟังก์ชัน "C" fgets()ต้องคำนึงถึงความแตกต่างในวิธีการส่งคืนแฟล็ก end-of-file (EOF)

ตัวชี้ไฟล์จะต้องถูกต้องและชี้ไปที่ไฟล์ที่เปิดโดยฟังก์ชันได้สำเร็จ โฟเพน()หรือ fsockopen() .

ด้านล่างนี้เป็นตัวอย่างง่ายๆ:


ตัวอย่างที่ 1: การอ่านไฟล์ทีละบรรทัด

$handle = fopen("/tmp/inputfile.txt" , "r" );
ในขณะที่ (! feof ($ จัดการ )) (
$buffer = fgets($แฮนเดิล, 4096);
สะท้อน $บัฟเฟอร์ ;
}
fclose($จัดการ);
?>

ความคิดเห็น:พารามิเตอร์ความยาวกลายเป็นทางเลือกโดยเริ่มจาก PHP เวอร์ชัน 4.2.0 หากละเว้นพารามิเตอร์นี้ ความยาวของบรรทัดจะถือว่าเป็น 1,024 ตั้งแต่ PHP 4.3 การไม่มีพารามิเตอร์ความยาวจะทำให้สตรีมถูกอ่านจนจบบรรทัด หากบรรทัดส่วนใหญ่ในไฟล์ยาวเกิน 8 กิโลไบต์ การตัดสินใจที่มีประสิทธิภาพที่สุดเกี่ยวกับทรัพยากรที่สคริปต์ใช้คือการระบุความยาวบรรทัดสูงสุด

ความคิดเห็น:ฟังก์ชั่นนี้สามารถประมวลผลข้อมูลไบนารีได้อย่างถูกต้องโดยเริ่มต้นจาก PHP 4.3 เวอร์ชันก่อนหน้านี้ไม่มีฟังก์ชันนี้

18.4K

จริงๆ แล้ววิธีการเปิดไฟล์ php ไม่ใช่ปัญหาใหญ่อะไร การเปิดขวดเบียร์อาจเป็นเรื่องยากขึ้นเมื่อคุณอยู่กลางป่า แต่มีเพียงโปรแกรมเมอร์ตัวยงเท่านั้นที่คิดแบบนี้ และสำหรับผู้เริ่มต้น เราจะบอกคุณเกี่ยวกับความสามารถทั้งหมดของ PHP สำหรับการทำงานกับไฟล์:

ไฟล์ .php

ไฟล์ที่มีนามสกุล php มีโค้ดที่เขียนด้วยภาษาโปรแกรมชื่อเดียวกัน php เป็นภาษาโปรแกรมฝั่งเซิร์ฟเวอร์ต่างจากภาษาอื่นๆ นั่นคือมันทำงานบนฝั่งเซิร์ฟเวอร์ ดังนั้นในการดีบักโค้ด จะต้องติดตั้งเซิร์ฟเวอร์ภายในเครื่องบนเครื่องไคลเอ็นต์

ในการทำงานกับไฟล์ php จะใช้แอปพลิเคชันพิเศษ - โปรแกรมแก้ไขซอฟต์แวร์ สิ่งที่พบบ่อยที่สุดคือ:

  • ดรีมวีฟเวอร์
  • PHPแก้ไข
  • การพัฒนา Eclipse PHP
เมื่อสร้างเว็บไซต์โดยใช้ PHP คุณอาจจำเป็นต้องใช้โค้ดโปรแกรมซ้ำ ในสถานการณ์เช่นนี้ จะสะดวกในการเชื่อมต่อโซลูชันสำเร็จรูปที่อยู่ในไฟล์อื่น โครงสร้างแบบรวมใช้สำหรับสิ่งนี้ ไวยากรณ์ของมันคือ:

รวมชื่อไฟล์

ตัวอย่างการเชื่อมต่อ:

รวมไฟล์:


การรวมไฟล์ยังสามารถทำได้โดยใช้โครงสร้างที่ต้องการ ต่างจากการรวมตรงที่รวมไฟล์ไว้ก่อนที่จะรันโค้ดโปรแกรม การใช้ need ในโค้ด สามารถเรียกไฟล์นี้ได้เพียงครั้งเดียวเท่านั้น เมื่อเข้าถึงอีกครั้ง ระบบจะแสดงข้อความแสดงข้อผิดพลาดส่วนกลางและหยุดการทำงานของโปรแกรม

โครงสร้างการรวมจะรวมเฉพาะแหล่งที่มาระหว่างการทำงานของโปรแกรมเท่านั้น รองรับการอ่านไฟล์ php หลายไฟล์ หากมีข้อผิดพลาดเกิดขึ้น เฉพาะข้อความเตือนเท่านั้นที่จะปรากฏขึ้น และการเรียกใช้โค้ดจะดำเนินการต่อจากบรรทัดถัดไป

การเปิดและปิดไฟล์

ใน php การดำเนินการทั้งหมดกับไฟล์จะดำเนินการในหลายขั้นตอน:

  • การเปิดไฟล์
  • การแก้ไขเนื้อหา
  • กำลังปิดไฟล์.

ฟังก์ชัน fopen() ใช้เพื่อเปิดไฟล์ ไวยากรณ์ของมันคือ:

int fopen (ชื่อไฟล์สตริง, โหมดสตริง [, int use_include_path])

อาร์กิวเมนต์ที่ยอมรับ:

  • ชื่อไฟล์สตริง – ชื่อไฟล์หรือเส้นทางที่แน่นอนไป หากไม่ได้ระบุเส้นทางไปยังไฟล์ ไฟล์นั้นจะถูกค้นหาในไดเร็กทอรีปัจจุบัน หากไฟล์ที่คุณกำลังมองหาหายไป ระบบจะแสดงข้อความแสดงข้อผิดพลาด ตัวอย่าง:

  • โหมดสตริง - ระบุโหมดการเปิดไฟล์ ค่าที่ยอมรับโดยอาร์กิวเมนต์:
  • r – ไฟล์ถูกเปิดเพื่ออ่านอย่างเดียว ตัวชี้ไฟล์ถูกตั้งค่าไว้ที่จุดเริ่มต้น
  • r+ – ไฟล์เปิดให้อ่านและเขียนได้
  • w – สร้างไฟล์ใหม่สำหรับการเขียนเท่านั้น หากมีไฟล์ชื่อเดียวกันอยู่แล้ว ข้อมูลทั้งหมดในนั้นจะถูกลบโดยอัตโนมัติ
  • w+ - สร้างไฟล์ใหม่สำหรับการเขียนและการอ่าน เมื่อมีไฟล์ดังกล่าว ข้อมูลจะถูกเขียนทับด้วยไฟล์ใหม่ทั้งหมด
  • a – ไฟล์เปิดให้เขียนได้ ตัวชี้ถูกตั้งค่าไว้ที่ส่วนท้าย นั่นคือการเขียนลงในไฟล์ php จะไม่เริ่มจากจุดเริ่มต้น แต่จากจุดสิ้นสุด
  • a+ - เปิดไฟล์ในโหมดอ่าน-เขียน การบันทึกจะเริ่มตั้งแต่จุดสิ้นสุด
  • b – โหมดการทำงานกับไฟล์ที่มีข้อมูลไบนารี (ในระบบเลขฐานสอง) โหมดนี้มีเฉพาะในระบบปฏิบัติการ Windows เท่านั้น

หากต้องการปิดการเข้าถึงไฟล์ ให้ใช้ฟังก์ชัน fclose() ไวยากรณ์:

int fclose (ไฟล์ int) โดยที่ไฟล์ int เป็นตัวจัดการไซต์ที่จะปิด

หลังจากอ่านหรือเขียนแต่ละครั้ง ไฟล์จะต้องถูกปิดด้วยฟังก์ชันนี้ มิฉะนั้น สตรีมที่สร้างขึ้นสำหรับไฟล์จะยังคงเปิดอยู่ และสิ่งนี้นำไปสู่การใช้ความจุของเซิร์ฟเวอร์โดยไม่จำเป็น

ตัวอย่าง:

การอ่านและการเขียนไฟล์

หากต้องการแสดงเนื้อหาทั้งหมดของไฟล์ ฟังก์ชัน readfile() เหมาะอย่างยิ่ง ไวยากรณ์ของมันคือ:

readfile (ชื่อไฟล์สตริง) โดยที่ชื่อไฟล์สตริงคือชื่อไฟล์สตริง (ไม่ใช่ตัวจัดการ)


ไฟล์เดียวกันสามารถอ่านได้โดยใช้ฟังก์ชัน fpassthru() มันอ่านข้อมูลจากตำแหน่งตัวชี้สิ้นสุดไปยังจุดสิ้นสุดของไฟล์ ไวยากรณ์ของมันคือ:

int fpassthru (ไฟล์ int)

ฟังก์ชันนี้จำเป็นต้องเปิดและปิดไฟล์ ตัวอย่าง:

ผลลัพธ์จะคล้ายกับครั้งก่อน

ฟังก์ชั่นสำหรับการทำงานกับไฟล์ใน php ช่วยให้คุณสามารถอ่านเนื้อหาทีละบรรทัดและอักขระต่ออักขระ:

  • string fgets (ไฟล์ int, ความยาว int)– ฟังก์ชั่นอ่านสตริงที่มีความยาว length ตัวอย่าง:

  • string fread (ไฟล์ int, ความยาว int)– การกระทำจะเหมือนกับการกระทำก่อนหน้า

ในการเขียนข้อมูลข้อความลงในไฟล์ มีสองฟังก์ชันที่เหมือนกัน:

  • int fputs (ไฟล์ int, สตริงสตริง [, ความยาว int ])
  • int fwrite (ไฟล์ int, สตริงสตริง [, ความยาว int ])

ฟังก์ชั่นเขียนลงในไฟล์ int file สตริงสตริงที่มีความยาวที่ระบุ int length ( อาร์กิวเมนต์ที่เป็นทางเลือก- ตัวอย่าง:

การสร้างและการลบไฟล์

หากต้องการสร้างไฟล์ php คุณสามารถใช้ฟังก์ชัน fopen() ในโหมดการเข้าถึง "w" หรือ "w+" หรือฟังก์ชั่น touch() มันตั้งเวลาแก้ไขไฟล์ หากไม่มีองค์ประกอบที่มีชื่อที่ค้นหา องค์ประกอบนั้นจะถูกสร้างขึ้น ไวยากรณ์ของมัน

อัปเดตครั้งล่าสุด: 11/11/2558

เช่นเดียวกับภาษาเขียนโปรแกรมส่วนใหญ่ PHP รองรับการทำงานกับไฟล์ ซึ่งเป็นวิธีหนึ่งในการจัดเก็บข้อมูล

การอ่านและการเขียนไฟล์

การเปิดและปิดไฟล์

หากต้องการเปิดไฟล์ใน PHP ฟังก์ชัน fopen() จะถูกกำหนดไว้ มันมีคำจำกัดความดังต่อไปนี้: resources fopen(string $filename, string $mode) พารามิเตอร์ $filename ตัวแรกแสดงถึงพาธไปยังไฟล์ และพารามิเตอร์ตัวที่สองคือโหมดการเปิด ขึ้นอยู่กับวัตถุประสงค์ของการเปิดและประเภทของไฟล์ พารามิเตอร์นี้สามารถรับค่าต่อไปนี้:

    "r" : ไฟล์ถูกเปิดแบบอ่านอย่างเดียว หากไม่มีไฟล์อยู่จะคืนค่าเท็จ

    "r+" : ไฟล์เปิดแบบอ่านอย่างเดียวและเขียนได้ หากไม่มีไฟล์อยู่จะคืนค่าเท็จ

    "w" : ไฟล์ถูกเปิดเพื่อเขียน หากมีไฟล์ดังกล่าวอยู่แล้ว ไฟล์นั้นจะถูกเขียนทับ หากไม่มี ไฟล์นั้นจะถูกสร้างขึ้น

    "w+" : ไฟล์ถูกเปิดเพื่อการเขียนและอ่านได้ หากมีไฟล์ดังกล่าวอยู่แล้ว ไฟล์นั้นจะถูกเขียนทับ หากไม่มี ไฟล์นั้นจะถูกสร้างขึ้น

    "a" : ไฟล์ถูกเปิดเพื่อการเขียน หากไฟล์ดังกล่าวมีอยู่แล้ว ข้อมูลจะถูกเขียนลงท้ายไฟล์ และข้อมูลเก่าจะยังคงอยู่ หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น

    "a+" : ไฟล์ถูกเปิดเพื่ออ่านและเขียน หากมีไฟล์อยู่แล้ว ข้อมูลจะถูกผนวกที่ส่วนท้ายของไฟล์ หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น

ผลลัพธ์ของฟังก์ชัน fopen จะเป็นตัวอธิบายไฟล์ หมายเลขอ้างอิงนี้ใช้สำหรับการดำเนินการกับไฟล์และเพื่อปิดไฟล์

หลังจากเสร็จสิ้นงาน ไฟล์จะต้องถูกปิดโดยใช้ฟังก์ชัน fclose() ซึ่งใช้ file descriptor เป็นพารามิเตอร์ ตัวอย่างเช่น ลองเปิดและปิดไฟล์:

$fd = fopen("form.php", "r") or die("ไม่สามารถเปิดไฟล์ได้"); fclose($fd);

โครงสร้าง or die("ข้อความแสดงข้อผิดพลาด") ช่วยให้สคริปต์หยุดทำงานและแสดงข้อความแสดงข้อผิดพลาดหากฟังก์ชัน fopen ไม่สามารถเปิดไฟล์ได้

กำลังอ่านไฟล์

คุณสามารถใช้ฟังก์ชันต่างๆ เพื่ออ่านไฟล์ได้ สำหรับการอ่านทีละบรรทัด จะใช้ฟังก์ชัน fgets() ซึ่งรับตัวอธิบายไฟล์และส่งกลับค่าการอ่านหนึ่งบรรทัด มาดูไฟล์ทั้งหมดทีละบรรทัด:

แต่ละครั้งที่มีการเรียก fgets() PHP จะวางตัวชี้ไว้ที่ท้ายบรรทัดที่อ่าน ในการติดตามจุดสิ้นสุดของไฟล์ จะใช้ฟังก์ชัน feof() ซึ่งจะคืนค่าเป็นจริงเมื่อไฟล์เสร็จสมบูรณ์ และจนกระทั่งถึงจุดสิ้นสุดของไฟล์ เราสามารถใช้ฟังก์ชัน fgets() ได้

กำลังอ่านไฟล์ทั้งหมด

ในกรณีนี้ เราไม่จำเป็นต้องเปิดไฟล์อย่างชัดเจน ขอรับหมายเลขอ้างอิง แล้วปิดไฟล์

บล็อกการอ่าน

คุณยังสามารถอ่านแบบทีละบล็อกได้ กล่าวคือ อ่านจำนวนไบต์จากไฟล์โดยใช้ฟังก์ชัน fread()

ฟังก์ชัน fread() ใช้พารามิเตอร์สองตัว: ตัวจัดการไฟล์ในการอ่าน และจำนวนไบต์ที่จะอ่าน เมื่ออ่านบล็อกแล้ว ตัวชี้ในไฟล์จะเลื่อนไปที่จุดสิ้นสุดของบล็อกนั้น และการใช้ฟังก์ชัน feof() ช่วยให้คุณสามารถติดตามความสมบูรณ์ของไฟล์ได้

เขียนไฟล์

หากต้องการเขียนไฟล์ ให้ใช้ฟังก์ชัน fwrite() ซึ่งจะเขียนบรรทัดต่อไปนี้ลงในไฟล์:

ฟังก์ชัน fputs() อื่นทำงานในลักษณะเดียวกัน:

การทำงานกับตัวชี้ไฟล์

เมื่อเปิดไฟล์เพื่ออ่านหรือเขียนในโหมด "w" ตัวชี้ในไฟล์จะถูกวางไว้ที่จุดเริ่มต้น เมื่ออ่านข้อมูล PHP จะเลื่อนตัวชี้ในไฟล์ไปที่จุดสิ้นสุดของบล็อกข้อมูลที่อ่าน อย่างไรก็ตาม เรายังสามารถจัดการตัวชี้ในไฟล์ด้วยตนเองและตั้งค่าเป็นตำแหน่งที่ต้องการได้ ในการทำเช่นนี้คุณต้องใช้ฟังก์ชัน ค้นหาซึ่งมีคำจำกัดความอย่างเป็นทางการดังต่อไปนี้:

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);