Podgląd pliku: / jacekk.info / nbp5.phps
<?php
/**************************************************
* Kursy walut *
**************************************************
* Wersja: 4.1 (SimpleXML) *
* Autor: Jacek Kowalski (http://jacekk.info) *
* *
* Strona WWW: http://jacekk.info/scripts/kursy *
* *
* Utwór rozprowadzany na licencji *
* http://creativecommons.org/licenses/by-nc/2.5/ *
**************************************************/
/* Kodowanie znaków: UTF-8 */
function convert($text) {
// Zmień na żądane kodowanie znaków - puste pozostawia UTF-8
$charset = '';
if($charset && function_exists('iconv')) {
return iconv('utf-8', $charset, $text);
}
elseif($charset && function_exists('recode_string')) {
return recode_string('utf8...'.$charset, $text);
}
else
{
return $text;
}
}
// Ścieżka do cache'a
$cache = dirname(__FILE__).'/kursy_cache.txt';
// Dane aktualne?
$recent = TRUE;
// Sprawdzenie możliwości zapisania kursów
if( ( !file_exists($cache) AND !is_writable(dirname($cache)) )
OR ( file_exists($cache) AND !(is_writable($cache)) ) ) {
$cache = '';
}
else
{
// Dane są aktualne?
if(@filemtime($cache)<strtotime('yesterday 12:15')) {
$recent = FALSE;
}
elseif(time()>strtotime('12:15') && @filemtime($cache)<strtotime('12:15')) {
$recent = FALSE;
}
}
// Nie istnieje możliwość zapisania kursów lub dane są nieaktualne
if($cache == '' OR !$recent) {
// Link do arkusza XML
$link = file_get_contents('http://www.nbp.pl/kursy/kursya.html');
if($link == FALSE) {
die('<p>Nie udało się pobrać kursów walut</p>');
}
$link = '/kursy/'.substr(strstr($link, 'xml/'), '0', '19');
// Pobieranie arkusza XML
$info = file_get_contents('http://www.nbp.pl/'.$link);
if($info == FALSE) {
die('<p>Nie udało się pobrać kursów walut</p>');
}
// Można zapisać do cache'a
if($cache != '') {
// Zapamiętujemy arkusz
file_put_contents($cache, $info);
}
}
else
{
// Ładujemy zapisane dane
$info = file_get_contents($cache);
}
// Parsowanie pliku XML
$info = simplexml_load_string($info, NULL);
foreach($info->pozycja as $v) {
$waluta[((string)$v->kod_waluty)] = array(
'name' => convert((string)$v->nazwa_waluty),
'ilosc' => (string)$v->przelicznik,
'kurs' => (string)$v->kurs_sredni,
);
}
echo $waluta['USD']['ilosc'].' USD: '.$waluta['USD']['kurs'].'<br />
'.$waluta['EUR']['ilosc'].' EUR: '.$waluta['EUR']['kurs'];
?>
<hr />
Kursy by <a href="http://jacekk.info" target="_blank">Jacek Kowalski</a>
Browse Code © 2010 by Jacek Kowalski