web-dev-qa-db-ja.com

PHP

ページに表示する価格の値がいくつかあります。

私はフロート価格を取り、フォーマットされた通貨valも通貨コードで返す関数を書いています。

たとえば、fnPrice(1001.01)$ 1,000.01

41
KoolKabin

最も簡単な答えは number_format() です。

_echo "$ ".number_format($value, 2);
_

アプリケーションを複数の通貨とロケール対応の書式設定(たとえば、一部のヨーロッパ人の場合は_1.000,00_)で動作させるには、少し複雑になります。

money_format() がありますが、Windowsでは機能せず、setlocale()に依存しています。これは、(任意に名前付き)サーバー側のロケールパッケージ。

アプリケーションを真剣に国際化したい場合は、Zend Frameworkの Zend_LocaleZend_Currency のような本格的な国際化ライブラリの使用を検討してください。

116
Pekka 웃

PHP 5.3+のintl拡張を使用すると、 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 €
54
Mathieu

sprintf()は、PHPあらゆる種類の文字列フォーマット用の関数 http://php.net/manual/en/function.sprintf.php

私はこの機能を使用します:

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

この小さな関数を作成して、すべてを自動的にNice通貨形式にフォーマットします。

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

編集

これは負の値を示さないことが指摘されました。書式を編集しやすくするために、2行に分割しました。負の値の場合は、括弧で囲みます。

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

PHPには、これを行うためのmoney_formatという関数があります。これについて読む here

1
Pila
<?php

$number = 1234.56;

// english notation (default)
$english_format_number = number_format($number);
// 1,235

// French notation
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56

$number = 1234.5678;

// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57

?>
0
sandeep kumar