2010-10-25 14 views

cevap

95

olduğunu yazdırmalısınız. Eğer uygulama birden fazla para ve yerel ayara duyarlı biçimlendirme (bizim örneğin Avrupalılar bazı 1.000,00) ile çalışmak edebilmek istiyorsanız

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

, biraz daha karmaşık hale gelir.

money_format() var, ancak Windows üzerinde çalışmıyor ve sunucu tarafında (isteğe bağlı olarak adlandırılmış) yerel ayar paketlerinin yüklenmesini gerektirdiğinden, benim düşünceme göre setlocale() belgesine dayanıyor. Uygulamanızı ciddi şekilde uluslararası hale getirmek istiyorsanız, Zend Framework'ün Zend_Locale ve Zend_Currency gibi tam gelişmiş bir uluslararası kitaplık kütüphanesini kullanmayı düşünün.

+5

+1, Windows ile ilgili sorunları bilmiyordu. – Sarfraz

+3

Güzel cevap, Zend_Locale & Zend_Currency için +1 – RobertPitt

+0

Mükemmel cevap – MikeMurko

7

sprintf() http://php.net/manual/en/function.sprintf.php

Bu fonksiyonu kullanmak biçimlendirme dize için her türlü PHP fonksiyonudur: PHP 5.3+ yılında intl uzantılı

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

bu – stillstanding

+1

virgül (binlerce ayırıcılar) ekleyin gravedig affedin olmayacaktır. '$ Dolar' (' sprintf() 'içinde' number_format() 'içinde sarabilirsiniz. Bu ilk Ģamandıraya dönüştürme gerektirmeyen bir çözüm olması doğal NumberFormatter – Magictallguy

44

, sen NumberFormatter sınıfını kullanabilirsiniz :

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

yazdırır hangi:

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

1 ekleyeceğiz. Para birimi olan bir float kullanmak çok tehlikeli. Fantezi işlevi için – KoolKabin

+2

Yani önemli için virgül –

1

Bu küçük işlevi, herhangi bir şeyi otomatik olarak güzel bir para birimi biçimine biçimlendirmek için oluşturdum.

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

Düzenleme

Bu negatif değerler göstermiyor işaret edildi. Onu iki satıra böldüm, bu yüzden biçimlendirmeyi düzenlemek daha kolay. negatif bir değer ise parantez içinde sarın:

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

+1! –

+1

Bu, negatif değerleri koruyor – FlyingNimbus

+0

Bu doğrudur. Negatif sayı desteği dahil etmek için işlevi güncelledim. Teşekkürler @FlyingNimbus – DAWTSF

1

PHP bu iş için money_format adında bir işlevi vardır. Bu here hakkında okuyun.