Dezimaltrennzeichen von Komma nach Punkt für alle Variablen in einem Skript

Ich logge einige meiner Daten selbst in CSV Dateien um diese dann in amCharts zu visualisieren.
Nachdem ich jetzt von IPS_Execute/cmd.exe/echo auf file_put_contents umgestiegen bin habe ich daß Problem daß ich jetzt in den CSV Files ein Komma anstatt eines Punktes habe.

Ich möchte vermeiden für alle PHP Variablen einzeln das Dezimaltrennzeichen mit number_format bestimmen zu müssen.
Gibt es eine Möglichkeit mit nur einem Befehl für alle Variablen in einem Skript das Dezimaltrennzeichen von Komma nach Punkt zu ändern?

Danke für Eure Tipps.

Wenn du einen Float hast, wird bei der zu String Konvertierung von PHP immer die Spracheinstellung (Gebietseinstellung) angewendet. Und in Deutschland haben wir halt das Komma.
Somit musst du schon es irgendwie selbst formatieren.
Wenn du in eine Datei schreibst, würde ich das empfehlen:
https://www.php.net/manual/de/function.fprintf.php
Michael

1 „Gefällt mir“

Ich hatte zuerst in Windows das Zahlenformat geändert (inkl. IPS Neustart) in der Hoffnung diese globalen Einstellung werden dann auch von PHP übernommen. Dem war aber nicht so.
Da ich jetzt erst alles mit mehreren Stunden Aufwand auf file_put_contents umgestellt habe will ich nicht schon wieder alles ändern. Wenn es keine Möglichkeit dies global bzw. pro Skript zu ändern werde ich wohl number format verwenden müssen.

Die einfache Variante ist ein str_replace :slight_smile:

SetValue(12345, str_replace('.' , ',' , $value));

Ich denke es sollte noch einfacher mit setlocale funktionieren. Allerdings habe ich es noch nicht hinbekommen. Bin noch am testen aber basierend der Beschreibung sollte das funktionieren.
Die aktuellen Zahlenformate können wie folgt abgefragt werden:

$locale_info = localeconv();
print_r($locale_info);

Diese Option fällt dann vermutlich auch weg …

Warning: setlocale() has been disabled for security reasons

str_replace ist eine schlecht Wahl, weil als Quelle wird dann schon der String der Float benutzt und der kann je nach Gebietsschema anders aussehen.
Alles mit prinrf oder auch number_format arbeitet dagegen mit dem echten Zahlenwert.
Michael

1 „Gefällt mir“