Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przewijanie i dopisywanie pliku w danej linijce
Forum PHP.pl > Forum > Przedszkole
tofik1778983
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 />


slightyboy
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)
erix
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
tofik1778983
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
erix
Nie, bo nadpiszesz wtedy istniejącą zawartość.
slightyboy
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.
erix
Najprościej, nie znaczy również, że najlepiej. Można powiedzieć, że jest to najgorsza z możliwych dróg...
tofik1778983
Dobra jest panowie bez kłótni ;]
Problem rozwiązany działa jak się patrzy.
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.