Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przewijanie i dopisywanie pliku w danej linijce
tofik1778983
post 23.07.2010, 16:05:17
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


Jest funkcja która daje możliwość przewinięcia pliiku do danej linijki i tam dopisania danych questionmark.gif
np mam plik:
  1. bla bla bla<br />
  2. bla bla bla<br />
  3. bla bla bla<br />
  4.  
  5. tu chce coś dopisać np 5 linijka<br />
  6.  
  7. bla bla bla<br />
  8. bla bla bla<br />
  9. tu dalej jakieś blabla<bra />




Ten post edytował tofik1778983 23.07.2010, 16:07:31


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
slightyboy
post 23.07.2010, 16:18:06
Post #2





Grupa: Zarejestrowani
Postów: 52
Pomógł: 12
Dołączył: 12.07.2007

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


Najprościej:

- pobierz linie pliku do tablicy (np. poprzez file)
- dodaj w odpowiednim miejscu wpis do tablicy
- zapisz dane do pliku (implode na tablicy i file_put_contents)
Go to the top of the page
+Quote Post
erix
post 23.07.2010, 16:29:20
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
- pobierz linie pliku do tablicy (np. poprzez file)

Jasne, będzie miał plik 200 MiB, to też? Marnujesz pamięć.

Rozwiązanie:
  • otwórz plik źródłowy, stwórz tymczasowy, docelowy
  • czytaj źródłowy, linia po linii - numer zapisuj w zmiennej, a bieżąco odczytaną zapisz w docelowym
  • jeśli numer linii jest tym, którego szukasz, zapisz do docelowego tę zawartość, którą potrzebujesz
  • itd, itd.
  • potem nadpisz plik źródłowy plikiem docelowym rename


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
tofik1778983
post 23.07.2010, 16:40:45
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


Dzięki erix tak myślałem żeby coś pokombinować z plikami tmp i zliczaniem linii..
Pliki będą mieć kilka mb..

A funkcją fseek()
dało by się np: przewinąć plik rewind() na początek potem fseek() przewinąć kawałek pliku do danego miejsca (linii) i zacząć dopisywać od podanego miejsca questionmark.gif

Ten post edytował tofik1778983 23.07.2010, 16:42:14


--------------------
Go to the top of the page
+Quote Post
erix
post 23.07.2010, 17:03:48
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie, bo nadpiszesz wtedy istniejącą zawartość.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
slightyboy
post 23.07.2010, 17:30:02
Post #6





Grupa: Zarejestrowani
Postów: 52
Pomógł: 12
Dołączył: 12.07.2007

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


Cytat(erix @ 23.07.2010, 17:29:20 ) *
Jasne, będzie miał plik 200 MiB, to też?
Wyobraź sobie, że nie. Nawet pisząc odpowiedź o tym pomyślałem i użyłem określenia - najprościej, ale najwidoczniej nie zauważyłeś. Gwoli ścisłości - najprościej nie znaczy najwydajniej.

Cytat(erix @ 23.07.2010, 19:03:55 ) *
Najprościej, nie znaczy również, że najlepiej. Można powiedzieć, że jest to najgorsza z możliwych dróg...
Nigdzie nie napisałem, że to najlepsze wyjście, ale NAJPROSTSZE, najbardziej logiczne, intuicyjne, które jako pierwsze nasuwa się na myśl (przynajmniej mnie). Najpierw rozwiązujesz problem, potem analizujesz metodę i w razie potrzeby optymalizujesz czy też dochodzisz do wniosku, że da się to zrobić zupełnie inaczej.

Ten post edytował slightyboy 23.07.2010, 18:24:47
Go to the top of the page
+Quote Post
erix
post 23.07.2010, 18:03:55
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Najprościej, nie znaczy również, że najlepiej. Można powiedzieć, że jest to najgorsza z możliwych dróg...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
tofik1778983
post 23.07.2010, 18:20:35
Post #8





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


Dobra jest panowie bez kłótni ;]
Problem rozwiązany działa jak się patrzy.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:26