Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pobieranie danych ze strony www
Forum PHP.pl > Forum > Przedszkole
Xevronix
Przykładowo chodzi mi o pobranie danych o kursie euro ze strony NBP (edukacja, nie chcę ich wykorzystywać).
Napisałem coś takiego:
  1. $url = 'http://kantory.pl/waluty/eur/';
  2.  
  3. if(!($zawartosc = file_get_contents($url))) {
  4. die('Otwarcie URL '.$url.' niemożliwe');
  5. }
  6.  
  7. $liczba = strpos($zawartosc, "Kurs NBP");
  8. echo substr($zawartosc, $liczba, 50)."<br />";

Uważam jednak, że nie jest to najlepszy sposób:
1) Musiałem skorzystać ze strony kantory.pl, ponieważ na stronie NBP skrót "EUR" lub "Euro" występuje kilkakrotnie przed tym, który potrzebuje
2) Skrypt pobiera zbędne znaczniki html (po użyciu funkcji htmlentities wszystkie widać)
3) funkcja substr chyba nie nadaje się do takiego przeszukiwania ciągu - sztywno wyznaczam długość stringa, który ma wyświetlić.

W jaki inny sposób można to napisać?
Wyczytałem, że dobrym sposobem mogłoby być użycie funkcji preg_match, tylko nie bardzo rozumiem jak ją zastosować.
Funkcja preg_match zwraca mi ciąg znaków dopasowanych do wzorca, tak?
Mogę więc napisać, że pojawiać ma się symbol EUR:
  1. $wzorzec = '{(EUR)}';
  2. preg_match_all($wzorzec ,$zawartosc, $tablica);
  3. print_r($tablica);

Jak zaznaczyć, że chcę oprócz tego skrótu 'EUR' wyświetlić również cyfry?
W jaki sposób teraz wiedzę, ile razy ciąg występuje w kodzie wykorzystać?
Czy wzorzec = '{(EUR [[:digit:]]+)}' jest poprawny?
hondek
Kursy walut udostępnia NBP w xml'ach smile.gif http://www.nbp.pl/home.aspx?f=/kursy/instr...rsow_walut.html
Xevronix
No dobra, ale załóżmy, że nbp nie udostępniałby kursu walut w xml.
Jak w takim wypadku przekształcić mój skrypt? snitch.gif
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.