จะเขียนลงไฟล์ใน PHP ได้อย่างไร?


108

ฉันมีสคริปต์นี้บนเซิร์ฟเวอร์ที่รองรับ PHP ฟรีหนึ่งเครื่อง:

<html>
<body>

<?php
$file = fopen("lidn.txt","a");


fclose($file);
?>

</body>
</html>

มันสร้างไฟล์lidn.txtแต่มันว่างเปล่า

จะสร้างไฟล์และเขียนอะไรลงไปได้อย่างไรเช่นบรรทัด "แมวไล่หนู"

คำตอบ:


157

คุณสามารถใช้ฟังก์ชันระดับสูงกว่าเช่น:

file_put_contents($filename, $content);

ซึ่งเป็นเหมือนการเรียกfopen(), fwrite()และfclose()ต่อเนื่องในการเขียนข้อมูลไปยังแฟ้ม

เอกสาร: file_put_contents


3
เพียงแค่ sidenote file_put_contents()ทำงานใน PHP5 เท่านั้น ดูเหมือนจะไม่มีปัญหาในกรณีนี้ (คำตอบของคุณได้รับตัวเร่งแล้ว) แต่อาจยังมีโฮสต์บางตัวที่ใช้ PHP4.x
Duroth

2
sidenote ที่สำคัญมาก: file_put_contents () เป็นฝันร้ายของหน่วยความจำเมื่อเปรียบเทียบกับ fopen () ฉันชอบที่จะใช้มัน แต่เมื่อจัดการไฟล์ขนาดใหญ่คุณต้องการให้สามารถ "สตรีม" ข้อมูลลงในไฟล์ได้ PHP จะต้องใช้ไฟล์สุดท้ายจำนวนมากเป็นหน่วยความจำภายในดังนั้นโปรดจำไว้ว่าเมื่อใช้ฟังก์ชันนี้ สำหรับข้อมูลจำนวนน้อยฉันขอแนะนำให้ใช้งานง่าย
John

1
จากนั้นใช้ file_put_contents ($ filename, $ other_stream) เหมือนกับการใช้ stream_copy_to_stream-) ซึ่งเป็นหน่วยความจำที่มีประสิทธิภาพมาก
Savageman

@Duroth ทำงานได้เฉพาะใน PHP5 หรือใช้งานได้จาก PHP5 เท่านั้น? นี่คือ 2 สิ่งที่แตกต่างกัน
Xsmael

2
@Xsmael ไม่ใช่ในอดีตอันไกลโพ้นของปี 2009) PHP7 ไม่ได้อยู่ในช่วงนั้น แต่ใช่put_file_contents()เปิดตัวครั้งแรกใน PHP5 และได้รับการรวมไว้ตั้งแต่ในเวอร์ชันต่อมาเช่นกัน
Duroth

88

พิจารณาfwrite () :

<?php
$fp = fopen('lidn.txt', 'w');
fwrite($fp, 'Cats chase mice');
fclose($fp);
?>

คุณสามารถใช้โค้ดด้านบนได้นอกจากนี้คุณยังสามารถใช้ file_put_contents สำหรับรายละเอียดเกี่ยวกับวิธีการอ่านและเขียนไฟล์คุณสามารถอ้างอิงได้จากtechflirt.com/file-handling-in-php
Ankur Kumar Singh

@sathish หลังจากเขียนไปยังไฟล์ดังกล่าวข้างต้นเราจะอ่านไฟล์โดยไม่ปิดไฟล์ได้อย่างไร ( fclose($fp) ) ฉันลองใช้$fp = fopen('lidn.txt', 'w+');แล้ว$fp = fopen('lidn.txt', 'a+');แต่ไม่ได้
ผล


10
$text = "Cats chase mice";
$filename = "somefile.txt";
$fh = fopen($filename, "a");
fwrite($fh, $text);
fclose($fh);

คุณใช้ fwrite()


หลังจากเขียนไปยังไฟล์ดังกล่าวข้างต้นเราจะอ่านไฟล์โดยไม่ปิดไฟล์ได้อย่างไร ( fclose($fh)) ฉันลองใช้$fh = fopen('lidn.txt', 'w+');`$ fh = fopen ('lidn.txt', 'a +'); `แต่ไม่ได้
ผล


6

ฉันใช้รหัสต่อไปนี้เพื่อเขียนไฟล์บนเว็บไดเร็กทอรีของฉัน

write_file.html

<form action="file.php"method="post">
<textarea name="code">Code goes here</textarea>
<input type="submit"value="submit">
</form>

write_file.php

<?php
// strip slashes before putting the form data into target file
$cd = stripslashes($_POST['code']);

// Show the msg, if the code string is empty
if (empty($cd))
    echo "Nothing to write";

// if the code string is not empty then open the target file and put form data in it
else
{
    $file = fopen("demo.php", "w");
    echo fwrite($file, $cd);

    // show a success msg 
    echo "data successfully entered";
    fclose($file);
}
?>

นี่คือสคริปต์การทำงาน อย่าลืมเปลี่ยน url ในform actionและไฟล์เป้าหมายในฟังก์ชันfopen ()หากคุณต้องการใช้บนไซต์ของคุณ

โชคดี.


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

6

ในการเขียนลงไฟล์PHPคุณต้องทำตามขั้นตอนต่อไปนี้:

  1. เปิดไฟล์

  2. เขียนลงในไฟล์

  3. ปิดไฟล์

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "a");
    fwrite($file  , $select->__toString());
         fclose($file );

6

ขั้นตอนมีดังนี้

  1. เปิดไฟล์
  2. เขียนลงในไฟล์
  3. ปิดไฟล์

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "w");        
    fwrite($file, $select->__toString());
    fclose($file);

5

fwrite()smidgen เร็วกว่าและfile_put_contents()เป็นแค่กระดาษห่อหุ้มสามวิธีนี้อยู่ดีดังนั้นคุณจะเสียค่าโสหุ้ยไป บทความ

file_put_contents (ไฟล์ข้อมูลโหมดบริบท):

file_put_contentsเขียนสตริงไปยังแฟ้ม

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

fwrite (ไฟล์สตริงความยาว):

fwriteเขียนไปเปิดฟังก์ชั่น file.The จะหยุดที่จุดสิ้นสุดของแฟ้มหรือเมื่อมันมาถึงความยาวที่กำหนดแล้วแต่ระยะใดถึง first.This ฟังก์ชันส่งกลับจำนวนไบต์ที่เขียนหรือเท็จเกี่ยวกับความล้มเหลว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.