Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kirjoituskohdan siirtäminen

Sivun loppuun

Sharph [20.02.2004 17:13:09]

#

Miten voi siirtää tiedoston kirjoituskohdan haettuun paikkaan? Ja jos voi, niin kun kirjoittaa, niin kirjoittaako se vanhan päälle, vai väliin?

T.M. [20.02.2004 17:40:28]

#

Lue tiedosto riveittäin taulukkoon ja korvaa haluamasi rivi jollain toisella, sitten käytä implode() funktiota ja liität taulukon taas kasaan kirjoittamista varten:

<?php
$id = 5; // mikä rivi korvataan
$tieto = "rivitystieto"; // millä tiedolla korvataan

$filu = file("tiedosto.txt");
$filu[$id] = $tieto."\r\n";

$liitos = implode("", $filu);
$save = fopen("tiedosto.txt", "w");
fwrite($save, $liitos);
fclose($save);
?>

Tällä tavalla voit kirjoittaa vaikkapa keskelle tiedostoa, kunhan sinulla on tiedossa se rivinumero, tässä tapauksessa se oli 5.

Mikäli haluat poistaa kokonaan jonkin rivin, niin muuta tuo $filu[$id] muotoon: $filu[$id] = "";

Sharph [20.02.2004 17:49:36]

#

Pitäisi kirjoittaa johonkin väliin

T.M. [20.02.2004 17:56:34]

#

Tuolla koodilla se ei onnistu vai? Kylläpäs onnistuu:

$filu[$id] = $filu[$id]."tähän niin\r\nmonta riviä\r\nkuin vain haluat\r\n";

folio [20.02.2004 18:12:54]

#

array_splice() -funktiolla saa lisättyä arvon keskelle taulukkoa. Mutta onnistuuhan se toki edellämainitullakin tavalla.

antsa [21.02.2004 01:11:13]

#

Minä en tuota implode()-funktiota käytä, kun kirjoitan tiedoston keskelle jotain. Teen ensin tiedostosta taulukon, muutan haluamaani riviä ja sitten kirjoitan foreach-silmukalla kaikki rivit taas tiedostoon.

Antti Laaksonen [21.02.2004 01:17:34]

#

Vai onko tarkoitus siirtää kirjoituskohta tiettyyn tiedoston kohtaan riveistä välittämättä? fseek-funktiolla tämä onnistuu, ja uusi tieto korvaa vanhan tiedon.
https://www.php.net/manual/en/function.fseek.php

T.M. [21.02.2004 01:35:49]

#

lainaus:

Minä en tuota implode()-funktiota käytä, kun kirjoitan tiedoston keskelle jotain. Teen ensin tiedostosta taulukon, muutan haluamaani riviä ja sitten kirjoitan foreach-silmukalla kaikki rivit taas tiedostoon.

implode() tekee saman asian, mutta nopeammin :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta