HOWTO · PHP
How to Format a Number to a Dollar Amount in PHP
Different methods can format a number to a dollar amount in PHP, like using number format, format currency, or a regular expression.
On this page
This tutorial article will cover different methods to format a number to a dollar amount in PHP with examples. These include:
number_formatNumberFormatter::formatCurrencyRegular expressionsManual format
We will also look at why the money_format function is no longer used.
Format a Number to a Dollar Amount in PHP Using the number_format Function
We use the number_format function to arrange a value with grouped thousands while adding decimal places and a currency type.
The function has four parameters:
number_format(NUMBER, DECIMAL DIGITS, THOUSANDS SEPARATOR, DECIMAL SEPARATOR)
- The number is the value to be formatted.
- Decimal digits specify how many decimal places.
- Decimal separator identifies what string to use for the decimal point.
- Thousand separator dictates the string used as a thousands separator.
It is worth noting if the thousand separator parameter is in use, the other three must accompany it for your code to work.
Example code:
<?php
// NUMBER
$amount = 123.45;
// TO USD - $123.45
$usd = "$" . number_format($amount, 2, ".");
echo $usd;
?>
Output:
$123.45
Format a Number to a Dollar Amount in PHP Using the NumberFormatter::formatCurrency Function
This is the latest and arguably the easiest method to format numbers to strings showing different currencies.
Ensure the extension=intl is enabled in php.ini.
There are three parameters you should keep in mind:
- Formatter, which is the
NumberFormatterobject. - Amount, which is the numeric currency value.
- The ISO 4217 dictates the currency to use.
Example code:
<?php
// NUMBER
$amount = 123;
// TO USD - $123.00
$fmt = new NumberFormatter("en_US", NumberFormatter::CURRENCY);
$usd = $fmt->formatCurrency($amount, "USD");
echo $usd;
?>
Output:
$123.00
Example two:
<?php
// NUMBER
$amount = 123.456;
// TO USD - $123.46
$fmt = new NumberFormatter("en_US", NumberFormatter::CURRENCY);
$usd = $fmt->formatCurrency($amount, "USD");
echo $usd;
?>
Output:
$123.46
Format a Number to a Dollar Amount in PHP Using a Regular Expression
This method is a whole can of worms. Going into its details will only confuse you.
This method arranges numbers into thousands while adding the currency sign of your choice.
Let us take a look at an example:
<?php
// NUMBER
$amount = 0.13;
// REGULAR EXPRESSION
$regex = "/\B(?=(\d{3})+(?!\d))/i";
$usd = "$" . preg_replace($regex, ",", $amount);
echo $usd;
?>
Output:
$0.13
Format a Number to a Dollar Amount in PHP Manually
This method is equivalent to picking a lock with brutal force. This method gives you the advantage of using any format you want.
Let us look at an example:
<?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
Output:
$100.00
The above methods should format a number to a string showing dollars and cents.
There is another method called money_format, but it does not work on windows. We highly advise you not to use this function as it is deprecated.