Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Usuwanie linii z pliku tekstowego
Forum PHP.pl > Forum > Przedszkole
Beterof
Piszę skrypt newsów i mam pytanie. Jak zrobić coś takiego, żeby usuwało mi wpis z jednej linii pliku tekstowego ale tylko z jednej a reszta żeby nie była usuwana??
nospor
najprosciej:
1)wczyutjesz plik do tablicy - file()
2) usuwasz ządaną linie - unset()
3)zapisujesz tablice spowrotem do pliku - file_put_contents() implode()
xbigos
@nospor a mam pytanie. nie mam teraz dostepu do serwera a zanim bede mogl to sprawdzic to zdaze zapomnieć.

A co jeśli plik będzie dużych rozmiarów? w pkcie pierwszym wrzucasz do tablicy całą zawartość pliku? Jeśli tak to czy przy dużych plikach nie będzie to powolna operacja? bo z tego co mi wiadomo operacje na plikach zajmują troche czasu przez to mielenie na dysku.

Sory za głupie pytanie ale zapomnę sprawdzić.

---
pozdrawiam
Gość
Ok użyję file() ale co dalej po tym. Jak rozbić to na linie? używając explode() czy coś innego ?
nospor
@xbigos dlatego napisalem ze to najprosciej a nie najoptymalniej winksmiley.jpg

gosc: zajrzyj do manual i zobacz co robi file() a nie sie glupio pytasz. Troche szacunku dla czasu ludzi, ktorzy staraja ci sie pomoc, nie zaszkodzi.
Dostales w punktach co masz zrobic, do kazdego punktu dostales funkcje jakich uzyc, a ty nawet nie zajrzales do manuala by sprawdzic co tak naprawde te funkcje robią. A jakbys zajrzal to bys sie nie pytal jak rozbic plik na linie...
xbigos
@nospor a jak jest optymalniej? moze mi sie kiedyś to przyda. czy istnieje jakas funkcja zapisu stringa do pliku a nastepnie przejscie kursora do nastepnej linii? bo jesli takowa istnieje to z powrotem tez tak powinno byc:D
Gość
Wiem co robi file() tylko jak później usunąć wybraną linię o to mi chodzi.
xbigos
gosc: patrz punkt 2 wypowiedzi nospora. A poza tym masz dokladny algorytm:) wiec nie wiem czego jeszcze nie wiesz.
Gość
Ok dzięki. Dzisiaj w ogóle nie myślę tongue.gif
nospor
@xbigos:
1) wczytujesz plik linia po linii - fopen, fread
2) zapisujesz plik linia po linii do pliku tymczasowego fopen, fwrite
3) w kroku drugim nie zapisujesz tylko linijkim ktora chcesz usunac
4) usuwasz plik oryginalny a plik tymczasowy zmieniasz nazwe na oryginalny

Innej metody raczej nie ma. O ile po pliku mozesz skakac (fseek) o tyle nie mozesz bezposrednio w nim usuwac.

Cytat
Wiem co robi file() tylko jak później usunąć wybraną linię o to mi chodzi.
No wybacz, ale przypomne ci oco sie pytales:
Cytat
Ok użyję file() ale co dalej po tym. Jak rozbić to na linie? używając explode() czy coś innego ?
xbigos
@nospor
dzieki, ale chyba sobie te operacje na plikach podaruję.
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.