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