Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak pobrać....
Forum PHP.pl > Forum > XML, AJAX > XML
giermaniak
Jak pobrać kurs $ ze strony NBP aby był aktualizowany.
Na stronie mam ceny w zł i chciałby aby były przeliczane automatycznie zgodnie z aktualnym kursem.
Chodzi mi tylko o USD.

Pozdrawiam
crash
Tu masz pobieranie aktualnego kursu dolara amerynańskiego za pomocą SimpleXML:
  1. <?php
  2. $url = 'http://www.nbp.pl/Kursy/xml/a256z041231.xml';
  3.  
  4. $xml = '';
  5. $kurs_dolara = -1;
  6.  
  7. if($f = @fopen($url, 'r'))
  8. {
  9.     while(!feof($f))
  10.     {
  11.         $xml .= fgets($f);
  12.     }
  13.     fclose($f);
  14. }
  15.  
  16. $xml = simplexml_load_string($xml);
  17.  
  18. foreach ($xml->children() as $child)
  19. {
  20.     if($child->kod_waluty == 'USD')
  21.     {
  22.         $kurs_dolara = $child->kurs_sredni;
  23.     }
  24. }
  25.  
  26. echo $kurs_dolara;
  27. ?>

Dalej rob z wartością $kurs_dolara już co chcesz.

A jako że nazwa pliku XML zmienia się to tu masz skrypt pobierający aktualny adres:
  1. <?php
  2. $url = 'http://www.nbp.pl/Kursy/KursyA.html';
  3.  
  4. if($f = @fopen($url, 'r'))
  5. {
  6. while(!feof($f))
  7. {
  8. $strona .= fgets($f);
  9. }
  10. fclose($f);
  11.  
  12. preg_match_all('#xml/[a-z0-9]+.xml#', $strona, $wynik);
  13. }
  14.  
  15. $url = 'http://www.nbp.pl/Kursy/'.$wynik[0][0];
  16. ?>
giermaniak
Coś mi to nie działa.
Fatal error: Call to undefined function: simplexml_load_string() in ..... on line 16
bela
moze masz php4 ?
bregovic
Jeśli nie masz simplexml to zawsze możesz użyć miniXML.
crash
No to jeszcze raz, z mniejszą ilością udziwnień:
  1. <?php
  2. $url ='http://www.nbp.pl/Kursy/KursyA.html';
  3.  
  4. if($f = @fopen($url, 'r'))
  5. {
  6.     while(!feof($f))
  7.     {
  8.         $line = fgets($f);
  9.         
  10.         if(strpos($line, 'dolar amerykański'))
  11.         {
  12.             fgets($f);
  13.             $kurs = fgets($f);
  14.             break;
  15.         }
  16.     }
  17.     
  18.     fclose($f);
  19.  
  20.     preg_match('#<td class=\"bg1\">[0-9,]+</td>#', $kurs, $wynik);
  21.  
  22.     echo $wynik[0];
  23. }
  24. else
  25. {
  26.     echo 'Połączenie nieudane.';
  27. }
  28. ?>
giermaniak
Dzięki teraz poszło.

Pozdrawiam i polecam się na przyszłość.
Paweł
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.