2011-02-09 15 views
6

मैं स्थान setlocale() फ़ंक्शन का उपयोग कर के कहते हैं कि "en_US" जाने के लिए निर्धारित किया है के लिए वर्तमान दशमलव/हजार विभाजक मिलता है।php कैसे किसी दिए गए स्थान

अब मैं एक हजार विभाजक इस तरह के बिना मुद्रा फ़ॉर्मेट करने के लिए कोशिश कर रहा हूँ:

$ मुद्रा = number_format ('।' $ मूल्य, 2, , '');

जो काम करता है, लेकिन कभी-कभी मेरे पास अन्य मुद्राएं होती हैं और मैं नंबर लोकेशन का उपयोग लोकेल के उपयोग के अनुसार सही दशमलव विभाजक का उपयोग करना चाहता हूं।

वहाँ एक रास्ता वर्तमान दशमलव विभाजक किसी भी तरह प्राप्त करने के लिए स्थान है कि निर्धारित किया गया है के आधार पर है?

+0

कोशिश करें ['स्ट्रिंग money_format (स्ट्रिंग $ प्रारूप, फ्लोट $ संख्या)'] (http://php.net/money_format)। – Jacco

उत्तर

9

localeconv() इसे करना चाहिए। मैनुअल से:

एक साहचर्य सरणी स्थानीय सांख्यिक और मौद्रिक स्वरूपण जानकारी युक्त देता है।

Here is a list भाषा स्ट्रिंग्स के setlocale() द्वारा मान्यता प्राप्त भाषा तारों के।

+0

धन्यवाद, दुर्भाग्य से खाली सरणी तत्व देता है कि: [thousands_sep] => [int_curr_symbol] => [CURRENCY_SYMBOL] => [mon_decimal_point] => – Jorre

+0

यह खिड़कियों के साथ कुछ करने के लिए है। सभी मेरे मैक/लिनक्स पर अच्छी तरह से काम करते हैं, लेकिन मैं हमारी विंडोज़ देव मशीनों में वेलल के रूप में लगातार मुद्राओं को प्रारूपित करने के लिए एक समाधान की तलाश में था। ओह अच्छा। जवाब के लिए धन्यवाद! – Jorre

0

शॉन तेज सही है, localeconv() समारोह का उपयोग करें। क्या आप सुनिश्चित हैं कि आपने अपने ओएस के लिए एक सही लोकेल सेट किया है, क्योंकि यूनिक्स-आधारित ओएस "en_US.UTF-8" को नोटेशन की तरह उपयोग करता है, जबकि विंडोज "एन-यूएस" का उपयोग करते हैं।

+1

यदि आपके डेवलपर कंप्यूटर और उत्पाद सर्वर पर आपके पास अलग-अलग ओएस है, तो आप इस तरह 'setlocale' को कॉल कर सकते हैं:' setlocale (LC_ALL, 'en_US.utf8', 'en-US') '। फ़ंक्शन पहले पाए गए लोकेल का उपयोग करेगा। – WASD42

+0

धन्यवाद, कि एक समाधान की तरह लगता है, लेकिन अभी भी, सरणी भी इन वैकल्पिक स्थानों के साथ खिड़कियों पर खाली रहता है – Jorre

+0

[MSDN मैनुअल] (http://msdn.microsoft.com/en-us/library/39cwe7zf से स्थानों का उपयोग करके देखें % 28vs.71% 29.aspx)। 'setlocale (LC_ALL,' en_US.utf8 ',' अमेरिकन ')' मेरे एक्सपी और विस्टा दोनों पर पूरी तरह से काम करता है, मुद्रा नाम और प्रतीक और संख्यात्मक विभाजक के साथ भरे सरणी लौटाता है। – WASD42

1

यह सबसे अच्छा नहीं है, लेकिन यह काम करता है:

$locale_info = localeconv(); 
echo 'decimal_point=', $locale_info['decimal_point'], '<br/>/n'; 

localeconv() दशमलव बिंदु चरित्र के अलावा अन्य क्षेत्रों के साथ एक साहचर्य सरणी देता है।

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