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
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
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 €
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);
}
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}";
}
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 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.