![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 30.03.2005 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
poszukiwałem klasy do obsługi XML'a z kursami walut z NBP i w końcu napisałem sam, może komuś się przyda
przykładowe użycie:
wynik: Cytat Array ( [0] => dolar amerykański [1] => 1 [2] => USD [3] => 2,8020 )
wynik: Cytat 2007-05-22
Array ( [USD] => Array ( [0] => dolar amerykaĹ„ski [1] => 1 [2] => USD [3] => 2,8020 ) [EUR] => Array ( [0] => euro [1] => 1 [2] => EUR [3] => 3,7735 ) ) Ten post edytował stanik_jr 22.05.2007, 13:57:58 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 214 Pomógł: 18 Dołączył: 25.04.2009 Ostrzeżenie: (20%) ![]() ![]() |
ja to tak rozwiązałem
Kod <?php class cWaluta { public $dane = nill; // dane xmla public $numer = ""; // numer notowa.. public $data = ""; // data notowa.. public $waluta = 'PLN'; public $lista = array(); private $znazwy = array('USD'=>'dolar ameryka..ski','HUF'=>'forint (W..gry)','DKK'=>'korona du..ska','EEK'=>'korona esto..ska', 'RON'=>'lej rumu..ski','BGN'=>'lew bu..garski','LVL'=>'..at ..otewski','PHP'=>'peso filipi..skie','XMN'=>'peso meksyka..skie', 'KRW'=>'won (Korea P..d.)'); static $singlet = nill; static function nazwa_pliku($lokalizacja) { $nazwa = ""; $d = dir($lokalizacja); while (false !== ($entry = $d->read())) if(eregi("([A-Za-z0-9]{1,})(.xml)",$entry)) return $lokalizacja.$entry; } static function wwalucie($nazwa) { $tmp = cWaluta::$singlet; if(isset($tmp->lista[$nazwa])) $tmp->waluta = $nazwa; else $tmp->waluta = 'PLN'; } static function wWaluta($xmlfile) { if(cWaluta::$singlet == nill) cWaluta::$singlet = new cWaluta($xmlfile); return cWaluta::$singlet; } public function przewalutuj($kwota) { $waluta = $this->lista[$this->waluta]; //print_r($waluta); $kw = $kwota / $waluta['kurs']; return sprintf("%01.2f {$waluta['kod']}",$kw * $waluta['licznik']); } private function zmien_nazwe($kod,$nazwa) { if(isset($this->znazwy[$kod])) return $this->znazwy[$kod]; else return $nazwa; } public function __construct($xmlfile) { $this->dane = new DOMDocument("1.0","utf-8"); $this->dane->load($xmlfile); // pobranie mumeru kurs..w $doc = $this->dane->getElementsByTagName('numer_tabeli'); $this->numer = $doc->item(0)->nodeValue; // pobranie daty kursu $doc = $this->dane->getElementsByTagName('data_publikacji'); $this->data = $doc->item(0)->nodeValue; // tworzenie listy walut $doc = $this->dane; $wal = $doc->getElementsByTagName('pozycja'); $this->lista['PLN']= array('nazwa'=>'Polski z..oty','licznik'=>'1','kurs'=>'1','kod'=>'PLN'); foreach($wal as $item) { $kod = $item->getElementsByTagName('kod_waluty')->item(0)->nodeValue; $nazwa = $this->zmien_nazwe($kod, $item->getElementsByTagName('nazwa_waluty')->item(0)->nodeValue); $licznik = $item->getElementsByTagName('przelicznik')->item(0)->nodeValue; $kurs = str_replace(',','.', $item->getElementsByTagName('kurs_sredni')->item(0)->nodeValue); $this->lista[$kod]= array('nazwa'=>$nazwa,'licznik'=>$licznik,'kurs'=>$kurs,'kod'=>$kod); } } } ?> je to w singlecie Kod $plik = cWaluta::nazwa_pliku('/home/grobyopi/www.nbp.pl/Kursy/xml/'); // podajje lokalizacje gdzie jest zapisany xml $waluty = cWaluta::wWaluta($plik); cWaluta::wwalucie("USD"); // ustawiam walute //w cenniku podaje $waluty->przewalutuj(50); //to jest 50zł zwraca juz przeliczone w cronie mam wpisane Kod codzienie o 12:59 "/bin/rm /home/grobyopi/www.nbp.pl/Kursy/xml/*" codziennie o 13:00 "/usr/bin/wget -r http://www.nbp.pl/Kursy/KursyA.html" może ci się coś przyda (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 19:25 |