2010-06-01 10 views
7

Ich schaue auf die Funktion money_format in PHP und verwirrt, wie man es formatieren, wie ich will. Ich will nicht USD vor meinem String, ich möchte ein Komma alle 3 Ziffern und 2 Dezimalstellen, so dass 12345.67 formatiert werden wird $ 12.345,67money_format() Optionen

Vielen Dank.

Antwort

21

Haben Sie sich number_format angesehen? Es ist ein bisschen einfacher, denke ich.

print number_format(1234567, 2, ",", "."); zum Beispiel.

+2

Einverstanden, ich weiß ehrlich nicht, warum sie sogar 'money_format()' erstellt haben, es ist wie eine Fremdsprache. – animuson

+0

Es ist ein Wrapper für die 'strfmon'-Funktion von C. Es ist nur eines dieser kleinen Dinge, die PHP eine einfache Lernkurve für Entwickler geben, die an andere Sprachen gewöhnt sind (und ihre Standardfunktionalität). Es kann tatsächlich sehr nützlich für die Formatierung von Währung für Plain-Text-Situationen sein, wo Sie ausrichten möchten (wie str_pad könnte) – CharlesLeaf

+0

Danke, ich musste die Platzierung der ',' und '.' Parameter ändern, um es US statt zu machen EURO-Stil. –

16

Um die ursprüngliche Frage zu beantworten money_format verwenden, ist es einfach

money_format('%.2n', 12345.67); 

money_format immer mit einem % beginnt. Die .2 zeigt an, dass Sie immer 2 Dezimalstellen verwenden möchten. Wenn Sie eine ganze Zahl übergeben, wird bis zum Ende .00 hinzugefügt. Die n zeigt an, dass Sie das nationale Währungsformat des Gebietsschemas verwenden möchten.

Es ist wichtig zu beachten, dass das Gebietsschema korrekt festgelegt sein muss, da money_format auf dem Gebietsschema basiert, das Sie für LC_MONETARY festgelegt haben. Verwenden Sie setlocale, um das Gebietsschema festzulegen. In diesem Fall scheint es, Sie wollen en_US.

setlocale(LC_MONETARY, 'en_US.UTF-8'); 
+3

Für die USA ist es eigentlich en_US.UTF-8 –

Verwandte Themen