Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

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.

php_function_reference.htm
Advertisements