Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie danych z NBP
Forum PHP.pl > Forum > Gotowe rozwiązania
stoklosa
Nie mogę sobie poradzić z skryptem, którego zadaniem było by pobieranie danych z kursu walut NBP. Jeśli mógłby ktoś nanieś poprawki i rozbudować o pobieranie więcej niż jednego kursu, by później można było wstawiać do tekstu za pomocą ziemnych. Oto on:

Kod
<?
//otwarcie strony zrodlowej
$file=fopen("http://www.nbp.pl/Kursy/KursyA.html","r");
//sprawdzenie poprawnosci otwarcia pliku
if (!$file) {
  echo "Blad otwarcia strony zrodlowej\n";
  exit;
}
do {
  $line = fgets($file,82);
} while ((!feof($file)) and
  (!eregi('^.*$', $line,$out)));

fclose($file);
echo $out[1];
?>


Pozdrawiam, Łukasz Stokłosa!
kamiox
Jeśli możesz wykorzystać php5 to np. w ten sposób:

  1. <?php
  2. $tabela_kursow = simplexml_load_file('http://www.nbp.pl/Kursy/xml/a194z041004.xml'); 
  3. foreach($tabela_kursow->pozycja as $pozycja) {
  4. echo 'nazwa waluty : ' ,$pozycja->nazwa_waluty.'<br />';
  5. echo 'kod waluty : ' ,$pozycja->kod_waluty.'<br />';
  6. echo 'kurs średni : ' , $pozycja->kurs_sredni.'<br />';
  7. }
  8. ?>
stoklosa
Nadal działam na php4, nie dało by się przerobić mojego powyżej podanego skryptu?
sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif
Sh4dow
polecam poszukac w manualu o xml'u w komentarzach sa skrypty ktore bez xml'a wydobeda dane z pliku i dadza go do tablicy, z tablicy t juz sam bedziesz musial sobie dac rade.
Polecam poszukac tez na phpclasses.org tam jest tego dosc duzo
hispano
Witam,

Kiedyś napisałem skrypcik dla telfonów IP Cisco. Mała przeróbka i gra. Może wydać się toprne, bo bardziej operuje na tekście niż na xml'u. Ale cóż po nitce do kłębka.
Powodzenia winksmiley.jpg
  1. <?php
  2. $adres = &#092;"http://www.nbp.pl/Kursy/\";
  3. $plik = fopen (&#092;"http://www.nbp.pl/Kursy/KursyA.html\", \"r\");
  4. //$plik = str_replace( '\"', ' ', $plik );
  5. while (!feof ($plik)) {
  6.  $bufor = fgets($plik, 4096);
  7.  $pos = strpos($bufor,'xml');
  8.  if (!$pos === false)
  9.  {
  10. $bufor = str_replace( '\"', ' ', $bufor );
  11. $pl=substr($bufor, strpos($bufor,'xml'), strpos($bufor,'.')-strpos($bufor,'xml')+4);
  12. $adres .= $pl;  //doklejanie
  13. //echo $adres;
  14. //echo '<br>';
  15. }
  16. }
  17. fclose ($plik);
  18. $lines = file($adres);
  19.  
  20. $i = 0;
  21.  header(&#092;"Content-type: text/xml\");
  22.  header(&#092;"Connection: close\");
  23.  header(&#092;"Expires: -1\");
  24. /* print \"<?xml version='1.0' encoding='ISO-8859-1'?>\";*/
  25.  print \"<CiscoIPPhoneText>\";
  26. while (strstr($lines[$i],'/tabela_kursow') === false)
  27.  {
  28. if (!strstr($lines[$i],'numer_tabeli') === false)
  29.  {  
  30.  preg_match(\"/<numer_tabeli>(.*?)</numer_tabeli>/\", $lines[$i],$subj);
  31.  print\"<Title>NBP nr.$subj[1]</Title>\";
  32.  }
  33. if (!strstr($lines[$i],'data_publikacji') === false)
  34.  {  
  35.  preg_match(\"/<data_publikacji>(.*?)</data_publikacji>/\", $lines[$i],$subj);
  36.  print\"<Prompt>Kursy walut z $subj[1]</Prompt>\";
  37.  print\"<Text>\";
  38.  }
  39. if (!strstr($lines[$i],'<pozycja>') === false)
  40.  {
  41. /* preg_match(\"/<nazwa_waluty>(.*?)</nazwa_waluty>/\", $lines[$i+1],$subj);print\"$subj[1] \";
  42.  $subj[1]=str_replace(chr(241),chr(110),$subj[1]);
  43.  $subj[1]=str_replace(chr(234),chr(101),$subj[1]);
  44.  $subj[1]=str_replace(chr(179),chr(108),$subj[1]);*/
  45.  preg_match(\"/<przelicznik>(.*?)</przelicznik>/\", $lines[$i+2],$subj);print\"$subj[1]\";
  46.  preg_match(\"/<kod_waluty>(.*?)</kod_waluty>/\", $lines[$i+3],$subj);print\"$subj[1]\";
  47.  preg_match(\"/<kurs_sredni>(.*?)</kurs_sredni>/\", $lines[$i+4],$subj);print\" $subj[1]n\";
  48.  
  49.  }
  50.  $i++; //a może nie co jeden byłoby szybciej??;)
  51.  };
  52.  print\"</Text>n\";
  53.  print\"</CiscoIPPhoneText>\";
  54. ?>
northwest
<?
$fp = fopen('http://www.nbp.pl/Kursy/KursyC.html','r');
while ($line=fgets($fp,10000)) {
$text.=$line;
}

fclose($fp);


$str = preg_match_all('#<td class="bg1">(.*?)</td>#si', $text, $jest);
if ($str) {

echo $jest[0][1].' - '.$jest[0][2].'<br>';
echo $jest[0][5].' - '.$jest[0][6].'<br>';
echo $jest[0][9].' - '.$jest[0][10].'<br>';
}
echo"aaaa: $jest[0][2]";
else {
echo 'NIE ZNALEZIONO';
}

?>


coś takiego powinno Ci pomóc smile.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.