60 votes

Imprimer le format de numéro de devise en PHP

J'ai des valeurs de prix à afficher dans ma page.

J'écris une fonction qui prend le prix flottant et renvoie également la valeur de la devise formatée avec le code de la devise.

Par exemple, fnPrice(1001.01) doit imprimer $ 1,000.01

68voto

Mathieu Points 2437

avec l'extension intl en PHP 5.3+, vous pouvez utiliser la classe 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;

qui imprime :

  UK: €12,345.67
 DE: 12.345,67 €

10voto

Jim Points 696

sprintf() est la fonction PHP pour toutes sortes de formatage de chaîne http://php.net/manual/en/function.sprintf.php

J'utilise cette fonction :

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

7voto

DAWTSF Points 101

J'ai construit cette petite fonction pour formater automatiquement n'importe quoi dans un bon format de devise.

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

Éditer

Il a été souligné que cela ne montre pas de valeurs négatives. Je l'ai divisé en deux lignes pour qu'il soit plus facile de modifier la mise en forme. Mettez-le entre parenthèses s'il s'agit d'une valeur négative :

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

3voto

sandeep kumar Points 620

De la doc

 <?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

?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X