2010-06-01 11 views
7

मैं php में money_format फ़ंक्शन देख रहा हूं और जिस तरीके से मैं चाहता हूं उसे प्रारूपित करने के तरीके पर उलझन में हूं। मैं अपनी स्ट्रिंग के सामने यूएसडी नहीं चाहता हूं, मैं प्रत्येक 3 अंकों और 2 दशमलव अंक को अल्पविराम चाहता हूं, इसलिए 12345.67 $ 12,345.67money_format() विकल्प

धन्यवाद।

उत्तर

21

क्या आपने number_format पर देखा है? मुझे लगता है कि यह थोड़ा आसान है। उदाहरण के लिए

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

+2

सहमत हैं, मैं ईमानदारी से नहीं जानता कि उन्होंने 'money_format()' क्यों बनाया है, यह एक विदेशी भाषा की तरह है। – animuson

+0

यह सी के 'स्ट्रफ़ोन' फ़ंक्शन के लिए एक रैपर है। यह उन छोटी चीजों में से एक है जो PHP को उन डेवलपर्स के लिए एक आसान सीखने की वक्र देता है जो अन्य भाषाओं (और उनकी डिफ़ॉल्ट कार्यक्षमता) के लिए उपयोग किए जाते हैं। यह वास्तव में सादे-पाठ स्थितियों के लिए मुद्रा स्वरूपण के लिए काफी उपयोगी हो सकता है, जहां आप संरेखित करना चाहते हैं (जैसे str_pad कर सकता है) – CharlesLeaf

+0

धन्यवाद, मुझे इसे ',' और '।' पैराम्स के प्लेसमेंट को स्विच करने के बजाय इसे अमेरिका बनाना है यूरो शैली। –

16

money_format का उपयोग कर मूल सवाल का जवाब करने के लिए, यह बस

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

money_format हमेशा एक % के साथ शुरू होता है। .2 इंगित करता है कि आप हमेशा 2 दशमलव स्थानों का उपयोग करना चाहते हैं। यदि आप एक पूर्ण संख्या पास करते हैं तो यह अंत में .00 जोड़ देगा। n इंगित करता है कि आप लोकेल के राष्ट्रीय मुद्रा प्रारूप का उपयोग करना चाहते हैं।

यह ध्यान रखना महत्वपूर्ण है कि आपके पास लोकेल सेट सही ढंग से होना चाहिए क्योंकि money_format आपके द्वारा LC_MONETARY के लिए निर्धारित लोकेल पर आधारित है। लोकेल setlocale का उपयोग करने के लिए। इस मामले में ऐसा लगता है कि आप en_US चाहते हैं।

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

अमेरिका के लिए यह वास्तव में en_US.UTF-8 है –

संबंधित मुद्दे