PHP

2010-10-25 4 views
32

में प्रिंट मुद्रा संख्या प्रारूप मेरे पृष्ठ में प्रदर्शित होने के लिए मेरे पास कुछ मूल्य मान हैं।PHP

मैं एक समारोह जो नाव कीमत लेता है और भी मुद्रा कोड के साथ स्वरूपित मुद्रा वैल रिटर्न ..

उदाहरण के लिए लिख रहा हूँ, fnPrice(1001.01) प्रिंट चाहिए $ 1,000.01

उत्तर

95

सबसे आसान जवाब number_format() है।

echo "$ ".number_format($value, 2); 

आप अपने आवेदन कई मुद्राओं और स्थान-अवगत स्वरूपण (हमें उदाहरण के लिए गोरों से कुछ के लिए 1.000,00) के साथ काम करने में सक्षम होना चाहते हैं, यह थोड़ा और अधिक जटिल हो जाता है।

money_format() है लेकिन यह विंडोज पर काम नहीं करता है और पर निर्भर करता है, जो मेरी राय में बकवास है, क्योंकि इसे सर्वर की तरफ लोकल पैकेजों की स्थापना की आवश्यकता है (क्योंकि मनमाने ढंग से नामित)।

यदि आप अपने आवेदन को गंभीरता से अंतर्राष्ट्रीयकृत करना चाहते हैं, तो ज़ेन फ्रेमवर्क के Zend_Locale और Zend_Currency जैसी पूर्ण उड़ा अंतर्राष्ट्रीयकरण लाइब्रेरी का उपयोग करने पर विचार करें।

+5

+1 विंडोज के साथ उन समस्याओं के बारे में नहीं पता था। – Sarfraz

+3

अच्छा जवाब, Zend_Locale और Zend_Currency के लिए +1 – RobertPitt

+0

उत्कृष्ट उत्तर – MikeMurko

7

sprintf() स्वरूपण http://php.net/manual/en/function.sprintf.php

मैं इस सुविधा का उपयोग स्ट्रिंग के सभी प्रकार के लिए PHP समारोह है: PHP 5.3+ में intl विस्तार के साथ

function formatDollars($dollars){ 
    return '$ '.sprintf('%0.2f', $dollars); 
} 
+3

यह अल्पविराम (हजारों विभाजक) नहीं जोड़ देगा – stillstanding

+1

कब्रिस्तान को क्षमा करें। आप 'number_format()' में '$ $' (' sprintf() 'में) को लपेट सकते हैं। वह मूल संख्या प्रारूपक – Magictallguy

44

, आप NumberFormatter वर्ग का उपयोग कर सकते :

$amount = '12345.67'; 

$formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY); 
echo 'UK: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL; 

$formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY); 
echo 'DE: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL; 

प्रिंट जो:

UK: €12,345.67 
DE: 12.345,67 € 
+2

+1 जोड़ देगा, इसलिए एक ऐसा समाधान होना महत्वपूर्ण है जिसके लिए पहले फ़्लोट में कनवर्ट करने की आवश्यकता न हो। मुद्रा के साथ एक फ्लोट का उपयोग करने के लिए इतना खतरनाक है। फैंसी फ़ंक्शन के लिए – KoolKabin

+2

के लिए अल्पविराम –

1

मैंने इस छोटे से फ़ंक्शन को स्वचालित रूप से किसी अच्छे मुद्रा प्रारूप में प्रारूपित करने के लिए बनाया है।

function formatDollars($dollars) 
{ 
    return "$".number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)),2); 
} 

संपादित

यह बताया गया है कि इस ऋणात्मक मानों नहीं दिखाती है। मैंने इसे दो लाइनों में तोड़ दिया ताकि फ़ॉर्मेटिंग को संपादित करना आसान हो। कोष्ठक में लपेट अगर यह एक नकारात्मक मूल्य है:

function formatDollars($dollars) 
{ 
    $formatted = "$" . number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)), 2); 
    return $dollars < 0 ? "({$formatted})" : "{$formatted}"; 
} 
+0

+1! –

+1

यह नकारात्मक मानों को बनाए रखता है – FlyingNimbus

+0

यह सच है। मैंने नकारात्मक संख्या समर्थन शामिल करने के लिए फ़ंक्शन को अपडेट किया है। धन्यवाद @FlyingNimbus – DAWTSF

1

पीएचपी एक समारोह ऐसा करने के लिए money_format कहा जाता है। इस here के बारे में पढ़ें।

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

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