Existuje nějaký způsob, jak pomocí php přespat soubor takovýmto způsobem:
Mám soubor, který obsahuje na začátku nějaká data (o neznámé velikosti), pak následuje nějaké klíčové slovo a opět další data o neznámé velikosti. Lze nějakým způsobem přepsat obsah souboru tak, aby zůstalo vše až po známé klíčové slovo a až to co je po něm aby bylo nahrazeno nějakými novými daty? Jestli jo, pls hodili by jste sem i zdroják jak na to, v php se mírně orientuji, ale s prací se soubory nemám žádné zkušenosti :(
Předem díky všem...
jj.. de to
<?php
$soubor=file("soubor.txt");
$soubor=implode("", $soubor);
$soubor=str_replace("klicove_slovo", "nahrazka_klicoveho_slova", $soubor);
$ff=fopen("soubor.txt", a);
ftruncate($ff, 0);
fwrite($ff, $text);
fclose($ff);
?>
mam tam asi par chyb, je to neohrabany, ale melo by to jit.. nejradsi bych kdyby to nekdo zkritizoval :]
ten tvuj skript udela to, ze nacte obsah souboru do promenne a v ni nahradi klicove slovo nejakym jinym textem. Pak ten soubor otevre, zrusi veskery obsah a zapise data z te promenne. Takze je to blbe. Podivam se na to, snad neco vymyslim.
ale ucel to splnuje, ne? vysledkem bude to, ze v tom souboru se zmeni jenom to co je potreba.. njn.. sem hold lama.. to je jedno.
co takhle:
<?php
$novy = "Toto je text, ktery se vlozi za klicove slovo.";
$klicove_slovo = ' abc '; // ohranicene mezerami na zacatku i konci
$fn = "soubor.txt";
$soubor=file($fn);
$soubor=implode("", $soubor);
$key_size = strlen($klicove_slovo);
$pos = stripos($soubor, $klicove_slovo);
$filepos = $pos + $key_size;
$fp = fopen($fn,"r+");
ftruncate($fp,$filepos);
fwrite($fp,$novy);
fclose($fp);
?>
(neni to odzkousene)
just-paja:
>ale ucel to splnuje, ne?
prave ze nesplnuje, protoze to, co jsi napsal, zachova soubor tak, jak ma byt, akorat misto toho klicoveho slova tam soupne neco jineho. To, co bylo za nim (a melo byt nahrazeno), to tam zustane.
Jeste doplneni, co me ted napadlo: mezi ftruncate($fp,$filepos); a fwrite($fp,$novy); vlozit fseek($fp,$filepos);, jinak se novy text asi zapise na zacatek, ne za to klic. slovo...
aha.. :] sem spatne prelouskal zadani