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

**URL:** <https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451>\
**Category:** Skripte, PHP, SQL (Fragen)\
**Created:** [13. Oktober 2021 um 19:13 UTC](https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451 "2021-10-13T19:13:02Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mr\_cg](https://community.symcon.de/letter_avatar_proxy/v4/letter/m/34f0e0/32.png) [@mr\_cg](https://community.symcon.de/u/mr_cg)\
**Post date:** [13. Oktober 2021 um 19:13 UTC](https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451/1 "2021-10-13T19:13:02Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Nall-chan](https://community.symcon.de/user_avatar/community.symcon.de/nall-chan/32/18_2.png) [@Nall-chan](https://community.symcon.de/u/Nall-chan)\
**Post date:** [13. Oktober 2021 um 19:23 UTC](https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451/2 "2021-10-13T19:23:13Z")

</div>

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](https://www.php.net/manual/de/function.fprintf.php)  
Michael

---

<div class="post-metadata">

**Author:** ![mr\_cg](https://community.symcon.de/letter_avatar_proxy/v4/letter/m/34f0e0/32.png) [@mr\_cg](https://community.symcon.de/u/mr_cg)\
**Post date:** [13. Oktober 2021 um 19:36 UTC](https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451/3 "2021-10-13T19:36:06Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![firebuster](https://community.symcon.de/user_avatar/community.symcon.de/firebuster/32/29702_2.png) [@firebuster](https://community.symcon.de/u/firebuster)\
**Post date:** [13. Oktober 2021 um 19:43 UTC](https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451/4 "2021-10-13T19:43:40Z")

</div>

Die einfache Variante ist ein str\_replace 🙂

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

---

<div class="post-metadata">

**Author:** ![mr\_cg](https://community.symcon.de/letter_avatar_proxy/v4/letter/m/34f0e0/32.png) [@mr\_cg](https://community.symcon.de/u/mr_cg)\
**Post date:** [13. Oktober 2021 um 19:51 UTC](https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451/5 "2021-10-13T19:51:31Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mr\_cg](https://community.symcon.de/letter_avatar_proxy/v4/letter/m/34f0e0/32.png) [@mr\_cg](https://community.symcon.de/u/mr_cg)\
**Post date:** [13. Oktober 2021 um 19:58 UTC](https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451/6 "2021-10-13T19:58:03Z")

</div>

Diese Option fällt dann vermutlich auch weg …

> Warning: setlocale() has been disabled for security reasons

---

<div class="post-metadata">

**Author:** ![Nall-chan](https://community.symcon.de/user_avatar/community.symcon.de/nall-chan/32/18_2.png) [@Nall-chan](https://community.symcon.de/u/Nall-chan)\
**Post date:** [13. Oktober 2021 um 21:11 UTC](https://community.symcon.de/t/dezimaltrennzeichen-von-komma-nach-punkt-fuer-alle-variablen-in-einem-skript/126451/7 "2021-10-13T21:11:27Z")

</div>

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
