Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dopisywanie do pliku
musiek86
post
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 22.03.2008

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


Witam mam takie pytanie, czy istnieje mozliwość dopisywania danych do pliku w konkretnym miejscu? Np chciałbym by pewne dane były dopisane po pewnej konkretnej fazie.
Dla przykładu, mam plik z treścią:
  1. <category "Glowne">
  2. <room "towarzyski">
  3. Description "opis"
  4. </room>
  5. <room "tematyczny">
  6. Description "opis"
  7. </room>
  8. </category>
  9.  
  10. <category "muzyka">
  11. <room "radiostacja">
  12. Description "opis"
  13. </room>
  14. </category>
  15.  
  16. <category "erotyczne">
  17. <room "erotyczny">
  18. Description "Popis"
  19. </room>
  20. </category>

Np po wystąpieniu frazy
  1. <room "tematyczny">
  2. Description "opis"
  3. </room>

chcę dopisac dane pobrane z formularza powiedzmy:
  1. <room "$nazwa_pokoju">
  2. Description "$opis"
  3. </room>

Założenie jest takie ze dopisywane dane nie zawsze są na koncu pliku bo fraza po ktorej ma nastąpic dopisanie raz bedzie w okolicach poczatku pliku a raz w srodku.
Da sie to ogarnąć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Witaj.

Jest funkcja fseek(), która po otworzeniu pliku może ustawić wskaźnik na konkretnym bajcie i tam rozpocząć dopisywanie. Problemem jest jednak znalezienie tego miejsca gdzie chcesz dopisywać. Moim zdaniem ta opcja odpada.

Można też pobrać zawartość pliku z file_get_contents() i dodać nowy produkt z preg_replace() przykładowo. Następnie zapisać plik ponownie.

Innym pomysłem, który mógłby wypalić jest użycie funkcji file() do odczytania pliku. Zwraca ona tablicę, gdzie każdy element jest jedną linią pliku. Następnie używając funkcji preg_grep() możesz znaleźć konkretną linię po której chcesz dopisywać. Dodajesz swoje dane i zapisujesz plik ponownie.

Na nic innego nie wpadłem.

Pozdrawiam.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #3





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


W przypadku dużych plików funkcja file, odpada bo może szybko zjeść całą dostępną pamięć.


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
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 Aktualny czas: 19.08.2025 - 15:03