Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jedna linia z pliku
daniel1302
post
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Witam, mam pytanie.
Chciałbym odczytać jedną linię z pliku tekstowego i na jej końcu ustawić wskaźnik.
Czy jest to możliwe bez sprawdzania każdej linii po koleji?


Chodzi mi o to, aby ustawić wskaźnik za linią o zawartości
linia testowa.

Ten post edytował daniel1302 13.02.2010, 09:20:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Blame
post
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Mi, niezbyt zaawansowanemu programiście przychodzi tylko jedno rozwiązanie do głowy, niestety trzeba będzie przy nim sprawdzać każdą linijkę pliku.
Otóż, najpierw wczytujemy plik do tablicy za pomocą file. Potem przechodzimy każdą linijkę za pomocą foreach i sprawdzamy czy to właśnie ta której szukamy dzięki preg_match, kiedy zwróci coś innego niż FALSE to znaleźliśmy. Następnie nadpisujemy daną linijkę, potem implode i file_put_contents.
Go to the top of the page
+Quote Post
pyro
post
Post #3





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  1. $file = 'file.txt';
  2. $handler = fopen($file, 'r+');
  3. fgets($handler);
  4. // teraz wskaźnik jest na koncu lini
Go to the top of the page
+Quote Post
Pilsener
post
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


  1. $uchwyt = fopen('plik.txt','r'); //otwieramy plik
  2. while(!feof($uchwyt)){ //parsujemy plik szukając wybranej linii
  3. $linia = rtrim(fgets($uchwyt));
  4. if($linia == 'testowa linia'){ //przerywamy pętle po znalezieniu szukanej linii
  5. break;
  6. }
  7. }
- wskaźnik jest umieszczony za znalezioną linią. Jeśli to ma być pierwsza linia, to nie trzeba używać pętli. Pozycję wskaźnika odczytasz funkcją ftell.

Nie da się znaleźć wybranej linii bez sprawdzania wszystkich linii po kolei.
Go to the top of the page
+Quote Post
daniel1302
post
Post #5





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Dzięki mam zrobione tj Blame proponował ale chciałem się upewnić, że nie obejdzie się bez pętli
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: 22.08.2025 - 16:11