Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kurs z notowania NBP
Forum PHP.pl > Forum > Przedszkole
PiNkOs
Witam,

Chcę pobrać aktualny kurs EUR ze strony http://notowania.pb.pl/instrument/PBWALEUR/euro

Napisałem coś takiego:
  1. <?
  2. $content = file_get_contents("http://notowania.pb.pl/instrument/PBWALEUR/euro");
  3. preg_match_all('/([0-9]).([0-9]{4})/', $content, $wybn);
  4. foreach($wybn[0] as $key => $value){
  5. echo "[".$key."] ".$value."<br />";
  6. }
  7. ?>


Wyświetliłem sobie to poprzez foreach

Moja wartość, którą chcę pobrać znajduje się w $wybn[0][6] . Interesuje mnie jednak to, dlaczego zostały pobrane takie dane jak np.:
Kod
[0] 3-2009
[1] 3-2012
[2] 8-4445
[3] 535400
[4] 999999
[5] 999999
[6] 4.1083
[7] 8-4445
[8] 535400
[9] 044428
[10] 729367
[11] 473874
[12] 295803
[13] 4,9713
[14] 295803
[15] 3,2417
[16] 295795
[17] 3,2137
[18] 295795
[19] 2,8392
[20] 295787
[21] 9,5046
[22] 295752
[23] 3,3102
[24] 0-2008
[25] 569504
[26] 102508
[27] 112176


Przypuszczam, że ma to związek z nieprawidłowym wstawieniem znaku kropki.
sowiq
Kropka w wyrażeniu regularnym oznacza jeden dowolny znak. Tak więc pozwoli na dopasowanie kropki, myślnika, liczby itd. Wyłącz funkcję kropki backslashem, żeby wyrażenie regularne traktowało ją jako zwykły znak:
  1. preg_match_all('/([0-9])\.([0-9]{4})/', $content, $wybn);


[edit]
A inna sprawa, że takie pobieranie danych nie jest najlepszym pomysłem, bo wynik nie zawsze będzie pod $wybn[0][6] z oczywistych względów (np. jakaś malutka zmiana na stronie). Dużo bezpieczniej pobierać tego typu dane z jakiegoś XML, chociażby z NBP: http://www.nbp.pl/home.aspx?f=/kursy/instr...rsow_walut.html
PiNkOs
Dzięki wielkie, rzeczywiście lepiej w taki sposób pobierać dane. Poradziłem sobie z pobieraniem nazw konkretnych *.xml. Problem jednak pojawia się, gdy z xml-a chce wyciągnąć kurs EURO.

Przykład:

http://www.nbp.pl/kursy/xml/a009z130114.xml

Mam dwie koncepcje (żadna nie działa sad.gif ):

I(na podstawie wyświetlenia $konkretna_data):
  1. preg_match_all('/EUR\s+[0-9],[0-9]{4}/', $konkretna_data, $kurs_eur);
  2. print_r($kurs_eur);


II(na podstawie drzewa xml):
  1. preg_match_all('/<kod_waluty>EUR</kod_waluty>\s<kurs_sredni>[0-9],[0-9]{4}/', $konkretna_data, $kurs_eur);
  2. print_r($kurs_eur);


W zmiennej $konkretna_data znajduje sie file_get_contents tego pliku

Byle by wyciągnęło tą cześć z kursem, resztę sobie substrem obetnę
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.