PHP Link aufrufen und Ausgabe in Datei speichern
Guten Tag liebe Gemeinde,
ich suche gerade nach einer Möglichkeit mit PHP einen Link aufzurufen und den dahinter liegenden Inhalt in eine CSV Datei zu schreiben. Hintergrund ist der Abruf von Rohstoffkursen von Metals-API. Mit nachfolgender Domain erhalte ich folgende Ausgabe bei Aufruf:
(API-Key habe ich hier entfernt)
XAU ist bspw. Gold, sodass ich vorher als Variable hinterlege, dass $gold = XAU ist und weitere.
Jetzt würde ich gerne eine CSV haben wollen, mit der ich folgenden Aufbau habe:
Kann mir jemand behilflich sein?
ich suche gerade nach einer Möglichkeit mit PHP einen Link aufzurufen und den dahinter liegenden Inhalt in eine CSV Datei zu schreiben. Hintergrund ist der Abruf von Rohstoffkursen von Metals-API. Mit nachfolgender Domain erhalte ich folgende Ausgabe bei Aufruf:
(API-Key habe ich hier entfernt)
https://metals-api.com/api/latest?access_key=&base=EUR&symbols=XAU%2CXAG%2CXPD%2CXPT%2CXRH
{"success":true,"timestamp":1659661260,"date":"2022-08-05","base":"EUR","rates":{"XAG":19.78129332511395,"XAU":1753.7988714614735,"XPD":1981.9586698116975,"XPT":911.8182637743391,"XRH":14561.727899503963},"unit":"per ounce"}
XAU ist bspw. Gold, sodass ich vorher als Variable hinterlege, dass $gold = XAU ist und weitere.
Jetzt würde ich gerne eine CSV haben wollen, mit der ich folgenden Aufbau habe:
Rohstoff;Preis;Zeitstempel;
Gold;1753,79;Datum und Uhrzeit (umgewandelt aus Unix Wert (1659661260));
Kann mir jemand behilflich sein?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3552742701
Url: https://administrator.de/contentid/3552742701
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
12 Kommentare
Neuester Kommentar
Servus.
Grüße Uwe
try{
// symbol
$symbol = 'XAU';
// get json
$json = file_get_contents("https://metals-api.com/api/latest?access_key=XXXXXXXX&base=EUR&symbols=$symbol%2CXAG%2CXPD%2CXPT%2CXRH");
// convert json to object
$obj = json_decode($json);
// convert price
$price = round((float)($obj->rates->$symbol,2);
// convert date
$dt = date("d.m.Y H:i:s",$obj->timestamp);
// export format
$export = <<<EOF
Rohstoff;Preis;Zeitstempel;
$symbol;$price;$dt;
EOF;
// export to file
file_put_contents('data.csv',$export);
}catch (Exception $ex) {
echo "ERROR: " . $ex->getMessage();
}
wenn ich nicht nur XAU (Gold-Wert) in der Datei ausgelesen habe möchte, sondern bspw. auch XAG wie muss ich es anpassen?
Schreib die Symbole in ein Array, durchlaufe dieses mit einer Foreach-Schleife und ergänze die Zeilen im Export-String.#edit# das API lässt einen offensichtlich auch mehrere Symbole mit Komma getrennt angeben, dann kannst du diese ebenfalls mit einem For-Loop im Export hinzufügen, brauchst dann aber nur eine einzige Web-Anfrage stellen und die Daten aus dem Object ziehen.
Beispiel:
try{
// symbols to request
$symbols = ['XAU','XAG'];
// join symbols with comma for url parameter
$joinedsymbols = implode(",",$symbols);
// get json data
$json = file_get_contents("https://metals-api.com/api/latest?access_key=XXXXXXXX&base=EUR&symbols=$joinedsymbols%2CXAG%2CXPD%2CXPT%2CXRH"");
// convert json to object
$obj = json_decode($json);
// convert date
$dt = date("d.m.Y H:i:s",$obj->timestamp);
// create export header
$export = "Rohstoff;Preis;Zeitstempel;\r\n";
// for each symbol in array
foreach($symbols as $symbol){
// get price for symbol
$price = round((float)$obj->rates->$symbol,2);
// append line with data to export string
$export .= "$symbol;$price;$dt;\r\n";
}
// export data to file
file_put_contents('data.csv',$export);
} catch (Exception $ex){
echo "ERROR: " . $ex->getMessage();
}
wie könnte ich definieren, dass in der Export-Datei nicht XAU oder XAG sondern anstelle dessen Gold bzw Silber?
Erstelle dir ein assoziatives Array$names = ["XAU" => "Gold", "XAG" => "Silber"];
$symbol = $names[$symbol];
Fettig.
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.
Echt jetzt? Steht doch oben ... Wo außerhalb der Schleife ist egal, nur bevor man die Variable verwendet.
Du solltest Code nicht nur Kopieren sondern als aller erstes auch verstehen wenn du ihn einsetzt.
https://www.php.net/manual/de/language.variables.scope.php
Das sollte man eigentlich in einem Administrator-Forum erwarten können. Erwarte hier keine FIX und FERTIG Lösungen. Das sind hier alles nur mögliche Rezepte ohne Anspruch Vollständigkeit oder Perfektion!
Du solltest Code nicht nur Kopieren sondern als aller erstes auch verstehen wenn du ihn einsetzt.
https://www.php.net/manual/de/language.variables.scope.php
Das sollte man eigentlich in einem Administrator-Forum erwarten können. Erwarte hier keine FIX und FERTIG Lösungen. Das sind hier alles nur mögliche Rezepte ohne Anspruch Vollständigkeit oder Perfektion!