PHP-ban a fájl elejére írás?





function prepend($string, $filename) {
$context = stream_context_create();
$fp = fopen($filename, 'r', 1, $context);
$tmpname = md5($string);
file_put_contents($tmpname, $string);
file_put_contents($tmpname, $fp, FILE_APPEND);
fclose($fp);
unlink($filename);
rename($tmpname, $filename);
}
17/L





A fájl elejére beilleszteni nem tudsz adatot, így a megoldás az lesz, ha
1. Létrehozod üresen a célfájlt (ha már tartalmaz adatot, azokat előtte írd ki egy tmp fájlba)
2. Beleírod az elejére szánt adatokat
3. Másolás helyett a forrásként szolgáló fájlból kiolvasod az adatokat, majd hozzáírod a fájlod végéhez.
Valahogy így:
$source_data = file_get_contents($source_file_name);
file_put_contents($dest_file_name, $data_to_prepend);
file_put_contents($dest_file_name, $source_data, FILE_APPEND | LOCK_EX);
Esetleg:
$fp_dest = fopen("destination.dat", "w");
fwrite($fp_dest, $data_to_prepend);
fwrite($fp_dest, fread($fp_source, filesize("source.dat"));
Lehetőleg ne másold ki innen a kódot, mert ebben a formában nem alkalmas éles felhasználásra, csupán a koncepciót hivatott bemutatni. Gondold át, hogyan lesz ez karbantarthatóbb, rugalmasabb, újrafelhasználhatóbb.





Előttem már leírták a megoldást.
Kicsit offtopic, #1 válaszoló, csak kíváncsiságból, miért fontos az, hogy, mintegy aláírásként odabiggyeszted, hogy "17/L". Miért olyan fontos?





Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!