Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nadpisanie jednej linii wewnątrz pliku
Forum PHP.pl > Forum > Przedszkole
Fazzzzi
Witam.

Potrzebuje patentu na nadpisanie linii w pliku, który przykładowo może wyglądać tak (zamierzam tego używać do obsługi ankiet na stronie):
Cytat
Dlaczego wróbelek?
bo tak
10
inna odpowiedz
3
bo ma jedną nóżkę bardziej
123
Gdzie pierwsza linia to treść pytania, a każde kolejne to możliwa odpowiedz i pod spodem ilość głosów. Problem pojawia się w edycji, bo wiem jak się ustawić kursor w pliku na konkretną linię, ale nie mam pojęcia jak ją nadpisać.
Nie wchodzi w grę zmiana sposobu obsługi ankiet - pliki muszą być.

Jest w stanie ktoś mi pomóc?
Z góry dziękuję za zainteresowanie smile.gif
Maxik
Funkcją file wczytujesz cały plik do tablicy, nadpisujesz wartość pod danym kluczem. Potem implode i zapis do pliku.
erix
Jasne, będzie miał plik 5 GiB, to też file?

file + implode, to najgorsze rozwiązanie, jakiego można tu użyć - pamięciożerne.

Cytat
Gdzie pierwsza linia to treść pytania, a każde kolejne to możliwa odpowiedz i pod spodem ilość głosów. Problem pojawia się w edycji, bo wiem jak się ustawić kursor w pliku na konkretną linię, ale nie mam pojęcia jak ją nadpisać.

Otwierasz dwa pliki -> jeden źródłowy, drugi - tymczasowy.

Przejeżdżasz pętlą przez pierwszy (czytając linia po linii przez fgets). Zrób sobie wcześniej zmienną licznika, abyś wiedział, który wiersz jest bieżąco przetwarzany. W tej samej pętli zapisujesz do drugiego pliku - jeśli nie jest to poszukiwana linia -> po prostu zapisz ją do drugiego pliku.

Jeśli poszukiwana -> wpisz do drugiego tę, którą chcesz nadpisać.

Na samym końcu podmieniasz pierwszy plik z drugim.

Ale w żadnym wypadku nie przez file + implode - to będzie zabójcze dla RAM-u.
Fazzzzi
Hmmm, to co napisał Maxik w przypadku moich niewielkich plików (kilkaset bajtów) będzie najlepszą metodą i nie wymaga praktycznie wysiłku, a to w moim przypadku teraz atut (dwa dni na oddanie projektu smile.gif ).

Erix - dzięki za wskazanie najpoprawniejszego rozwiązania, kolejny łyk wiedzy smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.