HOWTO · PHP

PHP で数値をドルの金額にフォーマットする

数値フォーマット、フォーマット通貨、または正規表現を使用するなど、さまざまな方法で PHP で数値をドル金額にフォーマットできます。

このページの内容

このチュートリアル記事では、例を使用して、PHP で数値をドルにフォーマットするさまざまな方法について説明します。これらには以下が含まれます:

  • number_format
  • NumberFormatter::formatCurrency
  • Regular expressions
  • Manual format

また、money_format 関数が使用されなくなった理由についても説明します。

PHP で number_format 関数を使用して数字をドルに変換する

number_format 関数を使用して、小数点以下の桁数と通貨タイプを追加しながら、グループ化された千の値を配置します。

この関数には 4つのパラメーターがあります。

number_format(NUMBER, DECIMAL DIGITS, THOUSANDS SEPARATOR, DECIMAL SEPARATOR)
  • 数値はフォーマットする値です。
  • 小数点以下の桁数は、小数点以下の桁数を指定します。
  • 小数点記号は、小数点に使用する文字列を識別します。
  • 千の区切り文字は、千の区切り文字として使用される文字列を示します。

1000 区切り文字パラメーターが使用されている場合、コードが機能するには、他の 3つがそれに付随している必要があることに注意してください。

コード例:

<?php

//  NUMBER
$amount = 123.45;

//  TO USD - $123.45
$usd = "$" . number_format($amount, 2, ".");
echo $usd;
?>

出力:

$123.45

PHP で NumberFormatter::formatCurrency 関数を使用して数値をドルの金額にフォーマットする

これは、異なる通貨を示す文字列に数値をフォーマットするための最新の、そして間違いなく最も簡単な方法です。

php.iniextension=intl が有効になっていることを確認します。

覚えておくべき 3つのパラメータがあります。

  • NumberFormatter オブジェクトである Formatter。
  • 金額。通貨の数値です。
  • ISO 4217 は、使用する通貨を規定しています。

コード例:

<?php
// NUMBER
$amount = 123;

// TO USD - $123.00
$fmt = new NumberFormatter("en_US",  NumberFormatter::CURRENCY);
$usd = $fmt->formatCurrency($amount, "USD");
echo $usd;
?>

出力:

$123.00

例 2:

<?php
// NUMBER
$amount = 123.456;

// TO USD - $123.46
$fmt = new NumberFormatter("en_US",  NumberFormatter::CURRENCY);
$usd = $fmt->formatCurrency($amount, "USD");
echo $usd;
?>

出力:

$123.46

PHP で正規表現を使用して数値をドルの金額にフォーマットする

この方法は、ワームの缶全体です。その詳細に入ると、混乱するだけです。

この方法では、選択した通貨記号を追加しながら、数値を数千に配置します。

例を見てみましょう:

<?php
// NUMBER
$amount = 0.13;

// REGULAR EXPRESSION
$regex = "/\B(?=(\d{3})+(?!\d))/i";
$usd = "$" . preg_replace($regex, ",", $amount);
echo $usd;
?>

出力:

$0.13

PHP で数値をドルの金額に手動でフォーマットする

この方法は、残忍な力で錠を選ぶのと同じです。この方法では、任意の形式を使用できるという利点があります。

例を見てみましょう:

<?php
// FOR A DOLLAR CURRENCY
function curformat ($amount) {
  //  SPLIT WHOLE & DECIMALS
  $amount = explode(".", $amount);
  $whole = $amount[0];
  $decimal = isset($amount[1]) ? $amount[1] : "00" ;

  //  ADD THOUSAND SEPARATORS
  if (strlen($whole) > 3) {
    $temp = ""; $j = 0;
    for ($i=strlen($whole)-1; $i>=0; $i--) {
      $temp = $whole[$i] . $temp;
      $j++;
      if ($j%3==0 && $i!=0) { $temp = "," . $temp; }
    }
    $whole = $temp;
  }

  //  RESULT
  return "\$$whole.$decimal";
}

//  UNIT TEST
echo curformat(100); // $100.00

出力:

$100.00

上記のメソッドは、数値をドルとセントを示す文字列にフォーマットする必要があります。

money_format と呼ばれる別のメソッドがありますが、Windows では機能しません。この機能は廃止されたため、使用しないことを強くお勧めします。