Bir metin dosyasının başlangıcına yazmadan metin eklemek için nasıl, php kullanarak

4 Cevap php

I var:

<?php

$file=fopen(date("Y-m-d").".txt","r+") or exit("Unable to open file!");

if ($_POST["lastname"] <> "")
{
   fwrite($file,$_POST["lastname"]."\n");
}

fclose($file);

?>

ancak dosyanın başlangıcını üzerine yazar. Nasıl ben eklemek yapabilirim?

4 Cevap

Senin sorunun tamamen emin değilim - veri yazmak ve varolan bir dosyanın başlangıcını yazmak fazla, ya da bundan sonra varolan içeriği tutarak, varolan dosyanın başlangıcına yeni veri yazmak onu yok etmek istiyorsun?

To insert text without over-writing the beginning of the file, sen ekleme için açmak gerekecek (a+ yerine r+ )

$file=fopen(date("Y-m-d").".txt","a+") or exit("Unable to open file!");

if ($_POST["lastname"] <> "")
{
   fwrite($file,$_POST["lastname"]."\n");
}

fclose($file);

If you're trying to write to the start of the file, önce, sonra çıktı dosyasına dosya içeriğine ardından yeni dize yazmak ( file_get_contents bakınız) dosya içeriğini okumak gerekir.

$old_content = file_get_contents($file);
fwrite($file, $new_content."\n".$old_content);

The above approach will work with small files, but you may run into memory limits trying to read a large file in using file_get_conents. In this case, consider using rewind($file), which sets the file position indicator for handle to the beginning of the file stream. Note when using rewind(), not to open the file with the a (or a+) options, as:

Eğer append dosyası ("a" ya da "+") modu açtıysanız, dosyaya yazmak herhangi bir veri olursa olsun her zaman dosya pozisyon, eklenecektir.

Dosya çok büyük olduğunu ve tüm dosya okuma ve daha sonra yeni eklenen veri sonra geri yazmaya göze alamaz eğer, bir dosya imleci kullanabilirsiniz.

<?php
    $fp = fopen('/file.txt', 'a+');

    fseek($fp, 0, SEEK_SET); //MOVES THE CURSOR 0 PLACES FROM START OF THE FILE
    fwrite($fp, $_POST["lastname"]."\n");

    fclose($fp);
?>

Aynı ekleme için dosyayı açarken olsun

<?php
$file=fopen(date("Y-m-d").".txt","a+") or exit("Unable to open file!");
if ($_POST["lastname"] <> "")
{
   fwrite($file,$_POST["lastname"]."\n");
}
fclose($file);
?>

Eğer dosyanın başında metin koymak istiyorsanız, önce gibi dosya içeriğini okumak olurdu:

<?php

$file=fopen(date("Y-m-d").".txt","r+") or exit("Unable to open file!");

if ($_POST["lastname"] <> "")
{    
    $existingText = file_get_contents($file);
    fwrite($file, $existingText . $_POST["lastname"]."\n");
}

fclose($file);

?>