Avatar billede clus Nybegynder
21. maj 2014 - 13:56 Der er 13 kommentarer og
2 løsninger

preg_match valutakurser nationalbanken

Hej

Jeg vil gerne hive den aktuelle dollarkurs ud fra denne her side:

http://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRatesXML?lang=da

jeg har tidligere brugt preg_match til at gøre dette, men nu har filen ændret udseende, og jeg kan ikke få det til at fungere.

Jeg håber der er en venlig sjæl, der kan og vil hjælpe.

i den gamle fil gjorde jeg følgende:

$valutafile = implode('', file("http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml"));
preg_match('/"USD" desc="Amerikanske dollars" rate="(.*?)"/', $valutafile, $valutamatches);

det hjælper ikke bare at ændre filens navn... desværre.
Avatar billede arne_v Ekspert
21. maj 2014 - 14:10 #1
Drop regex og brug en XML parser.
Avatar billede sonalias Seniormester
21. maj 2014 - 14:10 #2
Tror faktisk bare du skal slette s fra "Amerikanske dollars" så det matcher querien i filen
Avatar billede clus Nybegynder
21. maj 2014 - 15:16 #3
Hvordan vil du hive dollarkursen ud af XML filen?
Avatar billede jakobdo Ekspert
21. maj 2014 - 15:32 #4
Jeg kan komme så langt her:

$file = 'http://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRatesXML?lang=da';
$xml = simplexml_load_file($file);
$element = $xml->xpath('dailyrates/currency[@code="USD"]');

Men så kan jeg desværre ikke finde ud af hvordan man kommer fra element og ud til rate. :o(

ARNE ???
Avatar billede arne_v Ekspert
21. maj 2014 - 15:39 #5
proev:

'dailyrates/currency[@code="USD"]/@rate'
Avatar billede clus Nybegynder
21. maj 2014 - 16:00 #6
Hej jakobdo og arne_v

tusind tak for assistancen - jeg fik det til at virke :-)

Smid svar så skal jeg nok give jeg point.

Ha' en god dag.
Avatar billede jakobdo Ekspert
21. maj 2014 - 16:20 #7
Tak Arne og er svar.
Avatar billede arne_v Ekspert
21. maj 2014 - 16:34 #8
svar
Avatar billede jakobdo Ekspert
21. maj 2014 - 19:51 #9
Takker for point.
Avatar billede jakobdo Ekspert
21. maj 2014 - 19:58 #10
Kan du hjælpe lidt yderligere Arne, bare så jeg også lære lidt...

Følgende kode:

$file = 'http://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRatesXML?lang=da';
$xml = simplexml_load_file($file);
$element = $xml->xpath('dailyrates/currency[@code="USD"]/@rate');
echo '<pre>';
print_r($element);
echo '</pre>';

Smider dette ud:
Array
(
    [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [rate] => 545,84
                )

        )

)

Hvordan får jeg printet 545,84 og intet andet ?
Har forsøgt med echo $element['rate']; og $element->rate; men de printer begge ingenting.
Avatar billede arne_v Ekspert
22. maj 2014 - 03:04 #11
echo $element[0];
Avatar billede jakobdo Ekspert
22. maj 2014 - 09:41 #12
echo $element[0]->rate; var faktisk løsningen.
Hvorfor så jeg ikke lige den. :o)
Tak for info Arne, bare jeg en dag bliver så klog og dygtig som dig!
Avatar billede arne_v Ekspert
23. maj 2014 - 01:05 #13
arrayet er jo fordi at metoden kan returnere 0..* noder

nogle XPath API'er har to metoder:
- SelectSingleNode
- SelectNodes
Avatar billede jakobdo Ekspert
23. maj 2014 - 08:06 #14
Takker endnu engang. Nu fik jeg lige kigget lidt på xpath, det er jo ikke dumt, når man skal rode med xml. :o)
Avatar billede arne_v Ekspert
23. maj 2014 - 18:50 #15
XPath til XML er naesten lige saa noedvendig som SQL til databaser.

:-)
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