Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tekstitiedosto

Triton [20.12.2007 19:00:58]

#

Moi!

Kun tuolla file() funktiolla pystyy lataamaan kaikki teksti tiedostossa olevat tiedot taulukko muuttuujaan, niin miten samaiseen indeksin omaavaan muuttujaan pystyy kirjoittamaan?
Esim.

Eli kun tiedot ladataan muuttujaan, niin ne indeksit menee niiden rivien mukaan (eka rivi 0, toka 1, kolmas 2 jne.) Mutta jos halutaan muokkaa kolmanteen riviin tietoja, niin miten siihen pystyy kirjoittamaan?

Antti Laaksonen [20.12.2007 19:16:05]

#

Taulukkoon haetuista tiedoston riveistä kannattaa heti alkajaisiksi poistaa rivinvaihdot häiritsemästä, mikä tapahtuu seuraavasti:

$taulu = file("tiedot.txt");
for ($i = 0; $i < count($taulu); $i++) {
    $taulu[$i] = trim($taulu[$i]);
}

Tämän jälkeen tiedoston rivejä voi muutella haluamallaan tavalla:

$taulu[3] = "uusi neljäs rivi";
$taulu[5] = $taulu[5] . "jatko"; // lisätään tekstiä kuudennen rivin perään
$taulu[1] = $taulu[6];           // kopioidaan toiseksi riviksi seitsemäs
$taulu[7] = "muita";
$taulu[9] = "muutoksia";

Sitten tiedot pitää vielä kirjoittaa takaisin tiedostoon:

$tied = fopen("tiedot.txt", "w");
for ($i = 0; $i < count($taulu); $i++) {
    fwrite($tied, $taulu[$i] . "\r\n");
}
fclose($tied);

Viimeisessä vaiheessa oli oleellista muistaa lisätä taas rivinvaihdot rivien perään. Toinen tapa on pitää rivinvaihdot koko ajan taulukossa, jolloin rivien lukeminen ja tallennus on helppoa, mutta rivien muutos on vaikeampaa, kun pitää koko ajan pitää huolta, että rivinvaihdot menevät oikein.

tsuriga [20.12.2007 19:32:24]

#

Kannattavuus riippuu ihan käyttötarkoituksesta. Forin voi korvata simppelisti näin:

<?php
$lines = array_map( 'rtrim', file( 'tiedot.txt' ) );
?>

Tiedostoon kirjoittaminen hoituu myös yhdellä rivillä:

<?php
file_put_contents( 'tiedot.txt', implode( "\n", $lines ), LOCK_EX );
?>

Antti Laaksonen [20.12.2007 19:37:59]

#

Ja tuosta viimeisestä funktiosta (file_put_contents) kannattaa huomata, että sitä ei voi käyttää PHP 4:ssä.

tsuriga [20.12.2007 20:00:05]

#

PHP4:n tuki loppuu vuodenvaihteessa, joten jos palveluntarjoajasi ei vielä tarjoa vitosversiota niin vois hoputtaa päivittämään. Ja nelosversiollekin tuo funktio on olemassa, PHP Compat paketissa

Triton [20.12.2007 21:20:09]

#

Kiitos vastauksista! Itse tarvitsen teksti tiedostot lähinnä sivustoni käyttäjä tietojen tallentamiseen...

Vastaus

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

Tietoa sivustosta