PHP String money_format() Function
The PHP String money_format() function is used to return a number formatted as a currency string. The formatted number is added into the main string wherever a percentage symbol (%) appears.
The function is only defined in systems that support strfmon(). For example, money_format() is not defined in Windows. It is most commonly used in conjunction with another pre-defined PHP function, setlocale(), which has LC_MONETARY as its locale setting category. Money_format() is deprecated since version 7.4. Instead, NumberFormatter::formatCurrency() is called.
Syntax
Below is the syntax of the PHP String money_format() function −
string money_format ( string $format, float $number )
Parameters
Here are the parameters of the money_format() function −
$format − It contains the information about specified string to be formatted.
$number − The number to be inserted at the %-sign in the format string.
The format specification consists of the below order −
a % character
optional flags
optional field width
optional left precision
optional right precision
a required conversion character
Return Value
The money_format() function returns a formatted string. Characters before and after the formatting string will be returned unchanged. A non-numeric number sends E_WARNING and returns null.
PHP Version
First introduced in core PHP 4.3.0, the money_format() function continues to function easily in PHP 5, PHP 7, and PHP 8.
Example 1
This program shows how to use the PHP String money_format() function to format a number as currency in the most straightforward manner.
<?php
// Setting locale to US English
setlocale(LC_MONETARY, 'en_US');
// Format the number as US currency
$formatted = money_format('%i', 1234.56);
echo "Formatted Money: $formatted";
?>
Output
Here is the outcome of the following code −
Formatted Money: USD 1,234.56
Example 2
This program shows how to set a custom field width and formatting precision using the money_format() function.
<?php
// Setting locale to German
setlocale(LC_MONETARY, 'de_DE');
// Format with a field width
$formatted = money_format('%10.2n', 9876.543);
echo "Formatted Money with Width and Precision: $formatted";
?>
Output
This will generate the below output −
Formatted Money with Width and Precision: 9.876,54
Example 3
Now the below code shows how to use money_format() and embed formatted currency within a longer string.
<?php
// Setting locale to French
setlocale(LC_MONETARY, 'fr_FR');
// Embed the formatted currency
$price = 2500.75;
$message = money_format('The price is %i.', $price);
echo $message;
?>
Output
This will create the below output −
The price is 2 500,75 .
Example 4
In the following example, the money_format() function uses optional flags and precision to customize the output.
<?php
// Set locale for currency format
setlocale(LC_MONETARY, 'en_US');
// Format with different options
$amount = 12345.678;
echo "Default format: " . money_format('%.2n', $amount) . "\n";
echo "No decimals: " . money_format('%.0n', $amount) . "\n";
echo "Custom width: " . money_format('%#10.2n', $amount) . "\n";
echo "Negative value: " . money_format('%.2n', -$amount) . "\n";
?>
Output
Following is the output of the above code −
Default format: $12,345.68 No decimals: $12,346 Custom width: $12,345.68 Negative value: ($12,345.68)
Note: This function is deprecated as of PHP 7.4.0 and removed as of PHP 8.0.0. Relying on this function is strongly discouraged.