Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Usuwanie linii z pliku tekstowego
-Beterof-
post
Post #1





Goście







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??
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




najprosciej:
1)wczyutjesz plik do tablicy - file()
2) usuwasz ządaną linie - unset()
3)zapisujesz tablice spowrotem do pliku - file_put_contents() implode()
Go to the top of the page
+Quote Post
xbigos
post
Post #3





Grupa: Zarejestrowani
Postów: 239
Pomógł: 27
Dołączył: 13.07.2005
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


@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 to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







Ok użyję file() ale co dalej po tym. Jak rozbić to na linie? używając explode() czy coś innego ?
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@xbigos dlatego napisalem ze to najprosciej a nie najoptymalniej (IMG:http://forum.php.pl/style_emoticons/default/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...
Go to the top of the page
+Quote Post
xbigos
post
Post #6





Grupa: Zarejestrowani
Postów: 239
Pomógł: 27
Dołączył: 13.07.2005
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


@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 to the top of the page
+Quote Post
-Gość-
post
Post #7





Goście







Wiem co robi file() tylko jak później usunąć wybraną linię o to mi chodzi.
Go to the top of the page
+Quote Post
xbigos
post
Post #8





Grupa: Zarejestrowani
Postów: 239
Pomógł: 27
Dołączył: 13.07.2005
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


gosc: patrz punkt 2 wypowiedzi nospora. A poza tym masz dokladny algorytm:) wiec nie wiem czego jeszcze nie wiesz.
Go to the top of the page
+Quote Post
-Gość-
post
Post #9





Goście







Ok dzięki. Dzisiaj w ogóle nie myślę (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@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 ?
Go to the top of the page
+Quote Post
xbigos
post
Post #11





Grupa: Zarejestrowani
Postów: 239
Pomógł: 27
Dołączył: 13.07.2005
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


@nospor
dzieki, ale chyba sobie te operacje na plikach podaruję.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 14:32