Jump to content
php.lv forumi

Cut from file


haardys

Recommended Posts

Nē, tas nav iespējams.

 

 

Nu labi, ir :)

Ja gribi izmest kādu konkrēti rindiņu...

Ielasi failu masīvā ar file() funkciju.

Izmet nevajadzīgos masīva elementus ar unset() funkciju.

Sakabini visus masīva elementus vienā garā stringā ar implode() funkciju.

Ieraksti atpakaļ failā ar file_put_contents() funkciju...

 

Kad būsi kaut ko uzrakstījis, vari atgriezties un pajautāt kaut ko vairāk...

Edited by briedis
Link to comment
Share on other sites

// file fetch - fetch first lines from file
// $sP - file path
// $iLnCnt - line count
// return - string with first lines or null if file is empty
function fileFetch($sP, $iLnCnt) {
if (!filesize($sP)) return;

// nolasa pirmās $iLnCnt rindiņas
$s = '';
$h = fopen($sP, 'r+');
for ($i = 0; $i < $iLnCnt; $i++) $s .= fgets($h);
$iLen = ftell($h);

// pārceļ atlikušo faila saturu uz sākumu un atmet beigas
$sF = fread($h, filesize($sP));
fseek($h, 0);
fwrite($h, $sF);
ftruncate($h, filesize($sP) - $iLen);
fclose($h);

return $s;
}
echo fileFetch('data.txt', 3);

lieliem failiem for performance labāk būtu ņemt pēdējās n rindiņas, jo tad katru reizi nevajadzētu pārcelt atlikušo faila saturu uz sākumu. tad pa blokam lasa no faila beigām, kamēr dabū vajadzīgo skaitu rindu, un faila beigas vnk atmet ar ftruncate() tāpat kā šajā gadījumā

 

Nē, tas nav iespējams.

 

...

 

Kad būsi kaut ko uzrakstījis, vari atgriezties un pajautāt kaut ko vairāk...

ble, jau nojautu, ka kāds kko tādu pateiks :D:D:D

briedi, kad būsi iemācījies strādāt ar failiem, tad varēsi atbildēt kaut ko vairāk...

Link to comment
Share on other sites

Nedomāju, ka viņš tur apstrādās megabaitīgus failus...

Un pārlasījos, savā variantā domāju ka viņam kkur pa vidu izmest vajag..

 

Pie maziem failiem neiespringtu un rakstītu kaut ko šādu...

<?
$file = "file.txt";
$arr = file($file);
unset($arr[2]); //izmetam 3. rindiņu
unset($arr[3]); //izmetam 4. rindiņu
unset($arr[4]); //izmetam 5. rindiņu
file_put_contents($file,implode("",$arr));
?>

Edited by briedis
Link to comment
Share on other sites

cut nozīmē copy & delete, lai pēc tam kkur varētu taisīt paste. tobish nevar vnk unset() un aizmirst. pirms tam vajag arī saglabāt šis rindiņas, lai kko ar tām varētu darīt tālāk

 

bet ja cut ir vnk tikai delete, tad jau gan...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...