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: การอ่านไฟล์ทีละบรรทัด
|
ความคิดเห็น:พารามิเตอร์ความยาวกลายเป็นทางเลือกโดยเริ่มจาก PHP เวอร์ชัน 4.2.0 หากละเว้นพารามิเตอร์นี้ ความยาวของบรรทัดจะถือว่าเป็น 1,024 ตั้งแต่ PHP 4.3 การไม่มีพารามิเตอร์ความยาวจะทำให้สตรีมถูกอ่านจนจบบรรทัด หากบรรทัดส่วนใหญ่ในไฟล์ยาวเกิน 8 กิโลไบต์ การตัดสินใจที่มีประสิทธิภาพที่สุดเกี่ยวกับทรัพยากรที่สคริปต์ใช้คือการระบุความยาวบรรทัดสูงสุด
18.4Kความคิดเห็น:ฟังก์ชั่นนี้สามารถประมวลผลข้อมูลไบนารีได้อย่างถูกต้องโดยเริ่มต้นจาก PHP 4.3 เวอร์ชันก่อนหน้านี้ไม่มีฟังก์ชันนี้
จริงๆ แล้ววิธีการเปิดไฟล์ php ไม่ใช่ปัญหาใหญ่อะไร การเปิดขวดเบียร์อาจเป็นเรื่องยากขึ้นเมื่อคุณอยู่กลางป่า แต่มีเพียงโปรแกรมเมอร์ตัวยงเท่านั้นที่คิดแบบนี้ และสำหรับผู้เริ่มต้น เราจะบอกคุณเกี่ยวกับความสามารถทั้งหมดของ PHP สำหรับการทำงานกับไฟล์:
ไฟล์ .php
ไฟล์ที่มีนามสกุล php มีโค้ดที่เขียนด้วยภาษาโปรแกรมชื่อเดียวกัน php เป็นภาษาโปรแกรมฝั่งเซิร์ฟเวอร์ต่างจากภาษาอื่นๆ นั่นคือมันทำงานบนฝั่งเซิร์ฟเวอร์ ดังนั้นในการดีบักโค้ด จะต้องติดตั้งเซิร์ฟเวอร์ภายในเครื่องบนเครื่องไคลเอ็นต์
ในการทำงานกับไฟล์ php จะใช้แอปพลิเคชันพิเศษ - โปรแกรมแก้ไขซอฟต์แวร์ สิ่งที่พบบ่อยที่สุดคือ:
- ดรีมวีฟเวอร์
- PHPแก้ไข
- การพัฒนา Eclipse 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);