[PHP]edycja linii pliku txt


(Fajlip4) #1

Witam!

Mam plik "conf.txt":

linijka1

linijka2

linijka3

linijka4

linijka5

I szukam do niego skrypt który edytował by tylko jedną linijkę, na przykład tylko trzecią.

Znalazłem jedynie skrypt który umożliwia edycje całego pliku:

-Skrypt

-Podgląd

Czy jest możliwość zbudowania takiego czegoś?

Może ktoś z was spotkał się z czymś takim?

Proszę o pomoc.

Pozdrawiam!


(janki111) #2

spróbuj poleceniem count(conf.txt); -> policzy Ci to ilość wierszy jeśli się nie mylę

i potem jakoś wymyślisz by ta konkretną linijkę zmieniło


(Krzkaczor) #3

Wczytaj cały plik -> http://php.net/manual/en/function.file-get-contents.php

Rozdziel plik na linijki -> http://pl.php.net/manual/en/function.explode.php (rozdzielaj po \n )

Zmodyfikuj wybraną linijkę

Zapisz plik -> http://pl.php.net/manual/en/function.fi ... ntents.php


(Damgora) #4

funkcja:

function zmianaLinijki($nazwaPliku, $index, $nowaLinia) {

$plik=file($nazwaPliku);

$plik[$index]=$nowaLinia."\r\n";

$fp = fopen($nazwaPliku, "w");

while (!flock($fp, 2))

asleep(50);

fputs($fp, implode("", $plik));

flock($fp, 3);

fclose($fp);

}

[*:2kketbff]tylko php5

function zmianaLinijki($nazwaPliku, $index, $nowaLinia) {

$plik=file($nazwaPliku);

$plik[$index]=$nowaLinia."\r\n";

file_put_contents($nazwaPliku, $plik);

}

przykład użycia:

zmianaLinijki('test.txt', 3, 'nowa 4. linijka');

zmieni 4. linijkę ( 3. licząc od zera) w pliku o nazwie test.txt (można podać również ścieżkę do pliku) na nowa 4. linijka

edit: sory za zbieżność nazw zmiennych, poprawiłem na trochę jaśniejszy przykład (przynajmniej tak mi się wydaje :wink: )


(Fajlip4) #5

Dodałem do tego formularz ale niestety nie działa.

Kod

Wywala błąd w 18 lini, a nie wiem co tam jest źle.


(Jacek705) #6
  1. nie zamknięty elseif przed function

  2. w parametrach funkcji użyłeś

    $_POST['napis]

. Zamień na $napis i niżej

$plik[$index]=$napis."\r\n";

(Fajlip4) #7

Bardzo dziękuje za pomoc, skrypt bardzo mi się przyda.