Avatar billede laksen Nybegynder
18. april 2005 - 00:53 Der er 4 kommentarer

Hent valutakurs

Jeg kunne godt tænke mig at kunne indhente den daglige dollar-kurs på min side, så en pris også kan angives i US-dollars.

Jeg har kigget på følgende spørgsmål: http://eksperten.dk/spm/302498

Som jeg forstår ovennævnte diskussion, er det muligt at hente en given kurs ved hjælp af Nationalbankens hjemmeside. Er det korrekt forstået?

Hvis det er muligt og lovligt, hvordan gør man så brug af det script olebole nævner sidst i ovenstående tråd?

Jeg har brug for et helt konkret eksempel på en funktion, der (1) henter kursen fra den eksterne side og (2) omregner det danske beløb til US-dollars.

Håber det er forståeligt.
Avatar billede ranglen Nybegynder
18. april 2005 - 01:50 #1
prøv denne

<?php

// ---- hent kurs fra nationalbanken

$kurs = 0;

$file = 'http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml';

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");

$fp = fopen($file, "r") or die("kunne ikke finde xml dokument");
while($data = fread($fp, 4096)){
    xml_parse($xml_parser, $data, feof($fp)) or dir("fejl under behandling af dokument");
}
fclose($fp);

xml_parser_free($xml_parser);

function startElement($parser, $tagName, $attrs){
    global $kurs;
    if($tagName == "CURRENCY" && $attrs['CODE'] == 'USD'){
        $kurs = floatval($attrs['RATE']);
    }
}
function endElement($parser, $tagName){
}


// ---- omregn fra dansk til us

if($kurs == 0) echo "kursen for US dollars blev ikke fundet";
else{

    $dk = 100;
    $us = $dk/($kurs/100);

    $str_dk = sprintf("kr %.2f", $dk);
    $str_us = sprintf("\$%.2f", $us);

    echo "Kurs: $kurs<br>";
    echo "Danske kroner: $str_dk<br>";
    echo "US Dollars: $str_us<br>";
}


?>
Avatar billede ranglen Nybegynder
18. april 2005 - 01:55 #2
I stedet for at parse som xml, kunne kursen også hives ud med lidt regexp..

if(preg_match('/<currency code="usd".*?rate="(.*?)"/i', $data, $match)){
    $kurs = floatval($match[1]);
}else{
    echo "USD blev ikke fundet";
}
Avatar billede laksen Nybegynder
19. april 2005 - 12:57 #3
Det fungerer bare perfekt!

Du kan lægge et svar og modtage et par velfortjente point.
Avatar billede laksen Nybegynder
23. september 2005 - 15:21 #4
Så må det vist være på tide at lukke det her spørgsmål...

Hvis du ikke lægger et svar inden 10 dage lukker jeg det og tager pointene tilbage :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester