Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [GPW] Jak pobrać wybrane dane z pliku txt ?
free
post
Post #1





Grupa: Zarejestrowani
Postów: 269
Pomógł: 0
Dołączył: 6.02.2006

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


Na stronie parkiet.pl jest link do danych z sesji giełdy.
Chciałbym z tego całego tekstu wybrac np dla wartosci :
WIG,20070517,59764.2,60247.23,59218.2,59350.3,56311389
jedynie 59764.2
Jakich funkcji użyć ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
fullrespect
post
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 24.05.2012

Ostrzeżenie: (10%)
X----


Dzięki za wyrażenie (IMG:style_emoticons/default/smile.gif)
Prawie działa (IMG:style_emoticons/default/smile.gif)
ale u mnie wygląda to tak:

  1. wyraz "HFPLTPILOT:" znaleziono
  2. "Imie Nazwisko"
  3.  
  4. "ASW27 HFGIDGLIDERID:CHARON HFDTM100DATUM:WGS-1984 HFGPSGPS:CCSS_SOFTWARE_GPS HFFTYFRTYPE:CCSS HFRFWFIRMWAREVERSION:1.0 HFRHWHARDWAREVERSION:0.0 HFCIDCOMPETITIONID:BAD"
  5.  
  6. "15-meter C110511130414110511000004 C4903978N01857012EMartin C4904655N01855072EMARTIN C4828200N01814450EVELKY TRIBEC C4826965N01854707EBAN STIAVNICA C4840024N01806066EDUCHONKA C4903978N01857012EMartin C4903978N01857012EMartin LCONFPL[Version]"
  7.  
  8. "1140 LCONFPL[Task]"


A gdzie znaleźć objaśnienia wszystkich wyrażeń regularnych, szukam w sieci to tylko znajduję kilkanascie i na przykład nie wiem co oznacza "#" (IMG:style_emoticons/default/questionmark.gif)


EDIT.
Zrobiłem tak:

  1. $plik = file_get_contents('test.igc');
  2.  
  3. preg_match('#HFPLTPILOT:(.*)\s\s#isU', $plik, $pilot);
  4. preg_match('#HFCIDCOMPETITIONID:(.*)\s#isU', $plik, $cn);
  5. preg_match('#HFGTYGLIDERTYPE:(.*)\s#isU', $plik, $szybowiec);
  6. preg_match('#HFCCLCOMPETITIONCLASS:(.*)\s+#isU', $plik, $klasa);
  7. preg_match('#LCONFPLCondor version=(.*)\s+#isU', $plik, $wersja);
  8. preg_match('#LCONFPLLandscape=(.*)\s+#isU', $plik, $sceneria);
  9. preg_match('#LCONFlightInfoStartTime=(.*)\s+#isU', $plik, $starttime);
  10. preg_match('#LCONFlightInfoFlightTime=(.*)\s+#isU', $plik, $flighttime);
  11. preg_match('#LCONFlightInfoTaskStart=(.*)\s+#isU', $plik, $taskstart);
  12. preg_match('#LCONFlightInfoTaskTime=(.*)\s+#isU', $plik, $tasktime);
  13. preg_match('#LCONFlightInfoPlayerStatus=(.*)\s+#isU', $plik, $playerstatus);
  14. preg_match('#LCONFlightInfoDistanceFlown=(.*)\s+#isU', $plik, $distanceflown);
  15. preg_match('#LCONFlightInfoAverageSpeed=(.*)\s+#isU', $plik, $averagespeed);
  16. preg_match('#LCONFlightInfoPenaltyPoints=(.*)\s+#isU', $plik, $penaltypoints);
  17.  
  18. print "<br>\"$pilot[1]\"<br>";
  19. print "<br>\"$cn[1]\"<br>";
  20. print "<br>\"$szybowiec[1]\"<br>";
  21. print "<br>\"$klasa[1]\"<br>";
  22. print "<br>\"$wersja[1]\"<br>";
  23. print "<br>\"$sceneria[1]\"<br>";
  24. print "<br>\"$starttime[1]\"<br>";
  25. print "<br>\"$flighttime[1]\"<br>";
  26. print "<br>\"$taskstart[1]\"<br>";
  27. print "<br>\"$tasktime[1]\"<br>";
  28. print "<br>\"$playerstatus[1]\"<br>";
  29. print "<br>\"$distanceflown[1]\"<br>";
  30. print "<br>\"$averagespeed[1]\"<br>";
  31. print "<br>\"$penaltypoints[1]\"<br>";


i efekt mam taki:
  1. "Imie Nazwisko"
  2. "BAD"
  3. "ASW27"
  4. "15-meter"
  5. "1140"
  6. "Czechoslovakia"
  7. "13:00:00"
  8. "04:00:41"
  9. "13:53:44"
  10. "02:37:34"
  11. "Finished"
  12. "274.48"
  13. "104.52"
  14. "0.0"


plik test.igc ma duzo wiecej danych niż pokazałem wcześniej.

Ale na dal nie kumam znaczenia wszystkich wzorców (IMG:style_emoticons/default/tongue.gif)

Dzieki za naprowadzanie i czekam na jeszcze (IMG:style_emoticons/default/smile.gif)

Ok Panowie,
a jak wyciągnąć całą ostatnią linijkę która za każdym razem (od róznych userów) jest inna i unikalna.

plik wyglada mniej więcej tak:

  1. ACSS00001211112 //Ta linia by sie przydała, to jest pierwsza linia w pliku
  2. ...
  3. ...
  4. ...
  5. ...
  6. LCONFlightInfoTaskStart=13:38:28
  7. LCONFlightInfoTaskTime=02:01:27
  8. LCONFlightInfoPlayerStatus=Finished
  9. LCONFlightInfoDistanceFlown=213.03 km
  10. LCONFlightInfoAverageSpeed=105.23 km/h
  11. LCONFlightInfoPenaltyPoints=0.0
  12. LCONFlightInfoGhostCount=0
  13. GNXNYNLLVRS27HD27BU6Y8HRX2OATP72O9DOHVM1XQ7EXEKUVXV8BSDR5P5AX4ELF //Interesuje mnie też cała ta linijka, jest to ostatnia linia z pliku


Wielkie dzięki za podpowiedź.

Ten post edytował fullrespect 25.05.2012, 09:08:47
Go to the top of the page
+Quote Post
piotrala
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 4
Dołączył: 20.05.2007
Skąd: Kutno

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


Cytat(fullrespect @ 25.05.2012, 10:07:24 ) *
A gdzie znaleźć objaśnienia wszystkich wyrażeń regularnych, szukam w sieci to tylko znajduję kilkanascie i na przykład nie wiem co oznacza "#" (IMG:style_emoticons/default/questionmark.gif)

Znaczek # jest w tym przypadku oznaczeniem początku i końca wyrażenia regularnego. Zwróć uwagę, że po zakończeniu wyrażenia regularnego znajduje się jeszcze kilka dodatkowych literek - to są flagi, na przykład "i" oznacza ignorowanie wielkości liter. Zamiast hasha często widuje się znak |, o ile nie występuje on w środku wyrażenia.

A odnośnie problemu kolegi free to podejrzewam, że zamiast wyrażeń regularnych czy explode() lepiej sprawdziłaby się funkcja fgetcsv(). Służy ona do tego, aby pobrać kolejny wiersz z pliku i od razu przetworzyć go na tablicę, dzieląc wiersz w miejscu przecinków. Z tego co widzę, plik z Parkietu jest właśnie w formacie CSV (ang. Comma-Separated Values).
http://pl.wikipedia.org/wiki/CSV_(format_pliku)
Go to the top of the page
+Quote Post
fullrespect
post
Post #4





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 24.05.2012

Ostrzeżenie: (10%)
X----


Cytat(piotrala @ 25.05.2012, 15:01:50 ) *
(...) na przykład "i" oznacza ignorowanie wielkości liter. (...)


Super dzieki za podpowiedź - skąd się tego nauczyć ? Gdzie znajdę objaśnienia do wszystkich znaków ?
Go to the top of the page
+Quote Post
piotrala
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 4
Dołączył: 20.05.2007
Skąd: Kutno

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


Cytat(fullrespect @ 25.05.2012, 17:52:39 ) *
Super dzieki za podpowiedź - skąd się tego nauczyć ? Gdzie znajdę objaśnienia do wszystkich znaków ?

Hmm... sam szukam dobrej ściągawki z regexów, najlepiej w formie książeczki.

Do tej pory korzystałem z tego:
http://pl.wikipedia.org/wiki/Wyrażenie_regularne
http://pl.wikibooks.org/wiki/PHP/Podstawy_...żeń_regularnych
http://wyrazeniaregularne.wordpress.com/

Chyba najambitniejszą rzeczą, jaką robiłem przy użyciu regexów, było parsowanie rozkładu PKP i przerabianie go na formę strawną do wydruku w gazecie (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- free   [GPW] Jak pobrać wybrane dane z pliku txt ?   18.05.2007, 14:15:00
- - skowron-line   google.pl->wyrazenia regularne php   18.05.2007, 14:23:14
- - free   Wiem co to sa wyrazenia regularne. Nie wiem natomi...   18.05.2007, 14:32:15
- - kubarek   użyj funkcji preg_match_all   18.05.2007, 14:38:01
- - free   Mozesz mała podpowiedź ?   18.05.2007, 15:11:36
- - dr_bonzo   free: skoro znasz wyrazenia regularne i masz manua...   18.05.2007, 15:21:04
- - webdicepl   Cytat(free @ 18.05.2007, 15:32:15 ) W...   18.05.2007, 18:24:34
- - free   Funkcja file_get_contents okazała sie bardzo przy...   18.05.2007, 20:33:53
- - webdicepl   a jakie inne dane masz w tym pliku?   19.05.2007, 00:22:25
- - free   Podałem link A oto część danych z tego pliku : Kod...   19.05.2007, 10:45:38
- - Ludvik   Otworzyć plik funkcją file" title="Zobacz w manual...   19.05.2007, 11:23:52
- - free   substr tu nie pomoze, bo ten plik jest zmienny co...   19.05.2007, 11:50:06
- - Ludvik   W tym rzecz, że pomoże... Otwierasz plik funkcją f...   19.05.2007, 13:21:32
- - free   Rzeczywiście działa. Jak używam funkcji file_get_...   20.05.2007, 12:25:02
- - Ludvik   1. Bo funkcja file zwraca tablicę, a fil_get_conte...   20.05.2007, 15:38:49
- - webdicepl   [PHP] pobierz, plaintext <?phppreg_match ('...   20.05.2007, 17:49:59
- - free   Ludvik dziekuje za wytlumaczenie. W 8 lini jest bł...   21.05.2007, 10:44:20
- - webdicepl   Nie mam teraz dostępu do PHP, ale robisz to mniej ...   21.05.2007, 13:20:50
- - Ludvik   Racja, w ósmej linii jest błąd, ale powinien być p...   21.05.2007, 15:57:18
- - free   Ludvik poprawiłem te linijke tak jak napisales i j...   21.05.2007, 17:32:51
- - webdicepl   ~free przy użyciu preg_match" title="Zobacz w manu...   21.05.2007, 18:17:12
- - kubarek   tak ma właśnie być indeks zerowy zawiera cały znal...   21.05.2007, 18:20:41
- - free   aha ok. a czy mozna zamiast na sztywno WIG dac tam...   21.05.2007, 18:23:38
- - webdicepl   [PHP] pobierz, plaintext <?phppreg_match ('...   21.05.2007, 18:32:23
- - free   Dziala ok, tylko po tej ostatniej zmianie jak wysw...   21.05.2007, 18:41:07
- - webdicepl   Napisałem w pości wyżej ze ucina slasha przed n w ...   21.05.2007, 18:54:37
- - free   Ok zmienilem ([^(\n)]+) i jest ok   21.05.2007, 19:08:20
- - fullrespect   Witam serdecznie, jestem pierwszy raz na forum, z ...   24.05.2012, 14:28:26
- - amii   Tutaj masz regexpa, przetestowalem mi działalo: [P...   24.05.2012, 14:56:35
- - fullrespect   Dzięki za wyrażenie Prawie działa ale u mnie wyg...   25.05.2012, 09:07:24
|- - piotrala   Cytat(fullrespect @ 25.05.2012, 10:07...   25.05.2012, 15:01:50
|- - fullrespect   Cytat(piotrala @ 25.05.2012, 15:01:50...   25.05.2012, 16:52:39
|- - piotrala   Cytat(fullrespect @ 25.05.2012, 17:52...   25.05.2012, 22:27:47
- - fullrespect   Chyba po woli łapię o co tu biega z wyrażeniami re...   29.05.2012, 23:13:52


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: 3.10.2025 - 20:42