ฐานข้อมูล MySQL และ Access มีมากขึ้นเรื่อย ๆสื่อเก็บข้อมูลสาธารณะ แต่ในช่วงต้นทศวรรษ 1990 เป็นที่นิยมในการทำงานกับไฟล์ใน PHP โดยบันทึกระเบียนในไฟล์ข้อความที่จัดรูปแบบในรูปแบบ CSV โดยคั่นด้วยบรรทัดใหม่
ฐานข้อมูลมีความสะดวก แต่นักพัฒนาทุกคนควรอย่างน้อยต้องมีความรู้พื้นฐานเกี่ยวกับวิธีการอ่านและเขียนไฟล์ หลายคนอาจคิดเกี่ยวกับคำถามที่ว่า“ ทำไมฉันต้องรู้เรื่องนี้? ถ้าฉันใช้ไฟล์ไฟล์เหล่านี้จะถูกเขียนด้วย XML และฉันก็แค่ใช้ตัวแยกวิเคราะห์ "
ดังนั้นนี่คือสาเหตุบางประการที่คุณอาจต้องใช้ไฟล์:
การอ่านไฟล์และการเขียนเป็นการดำเนินการขั้นพื้นฐานหากคุณต้องการอ่านเอกสารก่อนอื่นคุณต้องเปิดเอกสารนั้น หลังจากนั้นคุณควรอ่านเนื้อหาให้มากที่สุดจากนั้นปิดไฟล์ ในการเขียนข้อมูลลงในเอกสารก่อนอื่นคุณต้องเปิด (หรืออาจสร้างหากยังไม่ได้สร้าง) หลังจากนั้นให้เขียนข้อมูลที่จำเป็นและปิดเมื่อดำเนินการเสร็จสิ้น
นอกจากนี้ยังสะดวกในการใช้ฟังก์ชันในตัวที่เปิดและปิดโดยอัตโนมัติ มีอยู่ใน PHP5 และคุณควรทำความคุ้นเคยกับแอตทริบิวต์ของไฟล์นั่นคือคุณสมบัติของมัน
พวกเขาสามารถบอกได้ว่า:
ที่ดีที่สุดคือเรียนรู้คุณลักษณะพื้นฐานทั้งหมดสำหรับการทำงานกับไฟล์ใน PHP สิ่งนี้จะช่วยอำนวยความสะดวกในการทำงานเป็นอย่างมาก
คุณอาจต้องทราบว่าไฟล์ถูกแก้ไขครั้งล่าสุดเมื่อใด ในกรณีนี้ฟังก์ชันต่อไปนี้จะช่วย: fileatime (), filemtime () และ filectime ()
<?php $ formatDate = "D d M Y g: i A"; $ timeA = fileatime (ไฟล์ $); $ timeM = filemtime (ไฟล์ $); $ timeC = filectime (ไฟล์ $); echo $ ไฟล์ "ได้รับการดู" วันที่ ($ formatDate, $ timeA) ". <br>"; echo $ ไฟล์ "มีการเปลี่ยนแปลง i-node ล่าสุด" วันที่ ($ formatDate, $ timeM) ". <br>"; echo $ ไฟล์ "มันเปลี่ยนไป". วันที่ ($ formatDate, $ timeC) ".";
นี่คือรหัสที่ดึงการประทับเวลาการเข้าถึงล่าสุดและแสดง:
ฟังก์ชัน filectime () แสดงเวลาเปลี่ยนแปลงของข้อมูลต่างๆที่เกี่ยวข้องกับไฟล์ (ตัวอย่างเช่นสิทธิ์การเข้าถึง) และ filemtime () แสดงการเปลี่ยนแปลงของไฟล์เอง
ฟังก์ชัน date () ถูกใช้เพื่อจัดรูปแบบการประทับเวลา Unix ที่ส่งคืนโดยฟังก์ชัน file * time ()
หากต้องการทราบว่า PHP ทำงานกับไฟล์ได้จริงหรือไม่คุณสามารถใช้ฟังก์ชัน is_file () หรือฟังก์ชัน is_dir () เพื่อตรวจสอบว่าเป็นไดเร็กทอรีหรือไม่
<? php echo $ ไฟล์ (is_file ($ file)? "": "not") "ไฟล์. <br>"; echo $ ไฟล์ (is_dir ($ file)? "": "not") "ไดเร็กทอรี";
ตัวอย่างรหัสเอาต์พุต:
ดังนั้นคุณสามารถหลีกเลี่ยงข้อผิดพลาดและไม่เปิด "ไม่ใช่ไฟล์" โดยประมาท ใน PHP การทำงานกับไฟล์และไดเร็กทอรีจะคล้ายกัน
ก่อนที่จะทำงานกับไฟล์คุณสามารถตรวจสอบว่าไฟล์นั้นอ่านได้หรือเขียนได้ ในการดำเนินการนี้คุณต้องใช้ฟังก์ชัน is_writable () และ is_readable ()
<? php echo $ ไฟล์ (is_readable ($ file)? "": "not") "อ่าน. <br>"; echo $ ไฟล์ (is_writable ($ file)? "": "not") "กำลังเขียน";
ฟังก์ชันเหล่านี้ส่งคืนค่าบูลีนและอธิบายว่าสามารถดำเนินการกับไฟล์ได้หรือไม่
รหัสจะพิมพ์ค่าต่อไปนี้ไปที่หน้าจอ:
เมื่อใช้ตัวดำเนินการ ternary คุณสามารถระบุได้ว่าไฟล์พร้อมใช้งานหรือไม่
หากต้องการทราบขนาดของไฟล์ให้ใช้ฟังก์ชัน filesize () จะแสดงเป็นไบต์
<? php $ file = "C: Windowsfile.ini"; $ size = filesize (ไฟล์ $); echo $ ไฟล์ "มีขนาด". ขนาด $. "ไบต์";
ฟังก์ชั่นจะแสดงสิ่งต่อไปนี้:
การใช้ไฟล์บนระบบ Windows ที่นี่เน้นความแตกต่างเล็กน้อย แบ็กสแลชมีความหมายพิเศษเป็นอักขระหลบหนี คุณจะต้องหลีกเลี่ยงปัญหานี้โดยเพิ่มแบ็กสแลชอื่น
หากยังไม่ได้สร้างไฟล์ฟังก์ชัน filesize () จะระบุว่า False และเกิดข้อผิดพลาด ดังนั้นก่อนอื่นไฟล์จะถูกตรวจสอบว่ามีอยู่ของคำสั่ง file_exists () ที่ต้องการหรือไม่
<? php $ file = "C: Windowsfile.ini"; if (file_exists ($ file)) {$ size = filesize ($ file); echo $ ไฟล์ "มีขนาด". ขนาด $. "byte.";} else {echo $ file. " ไม่พบไฟล์.";}
การตรวจสอบ file_exists () ควรรวมไว้เกือบตลอดเวลาเพื่อความปลอดภัย
ส่วนก่อนหน้านี้แสดงให้เห็นว่าคุณสามารถทำได้มากแค่ไหนเรียนรู้เกี่ยวกับไฟล์ที่คุณใช้งานก่อนที่จะอ่านหรือเขียน ตอนนี้คุณสามารถแยกวิเคราะห์ด้วยวิธีการอ่านเนื้อหาของไฟล์
ฟังก์ชั่นสำหรับการทำงานกับไฟล์ PHP ทำให้งานง่ายขึ้นในกรณีนี้คุณต้องมี file_get_contents () มันจะอ่านเนื้อหาทั้งหมดของไฟล์ในตัวแปรโดยไม่ต้องเปิดหรือปิดไฟล์เอง วิธีนี้สะดวกเมื่อปริมาณการบันทึกมีขนาดค่อนข้างเล็กเนื่องจาก PHP ไม่ได้มีเหตุผลเสมอไปที่จะอ่านข้อมูล 1 GB ลงในที่เก็บถาวรได้ทันที การทำงานกับไฟล์ ".ini" และฟังก์ชัน file_get_contents () แสดงอยู่ด้านล่าง
<? php $ file = "c: windowsfile.ini"; $ file1 = file_get_contents (ไฟล์ $); ก้อง $ file1;
สำหรับไฟล์ขนาดใหญ่หรือขึ้นอยู่กับความต้องการของสคริปต์ของคุณอาจเป็นการดีกว่าที่จะจัดการกับรายละเอียดด้วยตัวคุณเอง เนื่องจากเมื่อเปิดไฟล์แล้วคุณสามารถค้นหาบันทึกเฉพาะในนั้นและอ่านข้อมูลได้มากเท่าที่คุณต้องการ ฟังก์ชัน fopen () ใช้เพื่อเปิดไฟล์
<? php $ file = "c: windowsfile.ini"; $ file1 = fopen (ไฟล์ $, "r");
ฟังก์ชัน fopen () ต้องการสองอาร์กิวเมนต์:
ฟังก์ชันจะส่งคืนหมายเลขอ้างอิงหรือสตรีมไปยังไฟล์ซึ่งเก็บไว้ในตัวแปร $ file1 ต้องใช้ในคำสั่งที่ตามมาทั้งหมดเมื่อทำงานกับไฟล์
โหมด | ความคุ้มค่า | ตำแหน่งเคอร์เซอร์ | ถ้าไม่มีไฟล์? |
ร | อ่านเท่านั้น | จุดเริ่มต้นของไฟล์ | จะให้ข้อผิดพลาด |
ว | บันทึกเท่านั้น | จุดเริ่มต้นของไฟล์ | จะสร้างไฟล์ |
และ | บันทึกเท่านั้น | ท้ายไฟล์ | จะสร้างไฟล์ |
ฟังก์ชัน fgets () สามารถใช้เพื่ออ่านจากไฟล์ที่เปิดทีละบรรทัด
<? php $ file = "c: windowsfile.ini"; $ file1 = fopen (ไฟล์ $, "r"); ทำ {echo fgets ($ file1) "<br>";} ในขณะที่ (! feof ($ file1)); fclose ($ file1);
การใช้ do-while-loop เป็นสิ่งที่ดีทางเลือกที่จะทราบล่วงหน้าว่าไฟล์มีกี่บรรทัด ฟังก์ชัน feof () ตรวจสอบเพื่อดูว่าไฟล์เสร็จสมบูรณ์หรือไม่และการวนซ้ำจะดำเนินต่อไปจนกว่าจะถึงจุดสิ้นสุดของเงื่อนไขไฟล์ หลังจากอ่านเสร็จฟังก์ชั่น fclose () จะใช้เพื่อปิดเอกสาร
สองโหมดที่ใช้กันทั่วไปเมื่อเขียนลงไฟล์ด้วยโดยใช้ฟังก์ชัน fwrite (): "w" และ "a" "W" หมายความว่าคุณต้องเขียนลงในเอกสาร แต่ก่อนอื่นจะลบเนื้อหา "a" - เพิ่มข้อมูลใหม่ให้กับสิ่งที่มีอยู่แล้วในไฟล์ อย่าลืมใช้ตัวเลือกที่ถูกต้อง
ตัวอย่างต่อไปนี้จะใช้โหมด "a" สำหรับการบันทึก
<? php $ myFile = "files.txt"; $ file1 = fopen ($ myFile, "a"); $ output = "กล้วย" PHP_EOL; fwrite ($ file1, $ output); $ output = "จีน" PHP_EOL; fwrite ($ file1, $ เอาท์พุท); fclose ($ file1);
ขั้นแรกชื่อไฟล์จะถูกกำหนดให้กับตัวแปรจากนั้นจะเปิดในโหมด "a" เพื่อเพิ่ม ข้อมูลที่จะเขียนถูกกำหนดให้กับตัวแปร $ output และ fwrite () และข้อมูลจะถูกต่อท้ายไฟล์ ทำซ้ำขั้นตอนนี้เพื่อเพิ่มบรรทัดอื่นจากนั้นเอกสารจะปิดโดยใช้ fclose ()
PHP_EOL ค่าคงที่ที่กำหนดไว้ล่วงหน้าจะเพิ่มอักขระขึ้นบรรทัดใหม่เฉพาะสำหรับแพลตฟอร์มที่ PHP ทำงานด้วยไฟล์ข้อความ
เนื้อหาของไฟล์หลังจากรันโค้ดด้านบนควรมีลักษณะดังนี้:
file_put_contents () ฟังก์ชั่นยังสามารถเขียนลงไฟล์ ต้องใช้ชื่อไฟล์ข้อมูลที่จะเขียนและค่าคงที่ FILE_APPEND หากต้องการเพิ่มข้อมูล (จะเขียนทับเนื้อหาไฟล์เริ่มต้น)
นี่คือตัวอย่างเดียวกับด้านบน แต่คราวนี้ใช้ file_put_contents ()
<? php $ myFile = "files.txt"; file_put_contents ($ myFile, "กล้วย". PHP_EOL); file_put_contents ($ myFile, "จีน". PHP_EOL, FILE_APPEND);
คุณต้องทำงานกับฟังก์ชันเหล่านี้บ่อยๆดังนั้นจึงควรจดจำฟังก์ชันเหล่านี้ไว้ให้ดีที่สุด นอกจากนี้วันหนึ่งพวกเขาอาจทำให้งานที่ซับซ้อนบางอย่างง่ายขึ้นเมื่อทำงานกับไฟล์ PHP